You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iot/labs/CameraCard/CameraCard/MainForm.cs

814 lines
34 KiB

using CameraCard.Data;
using Newtonsoft.Json;
using Omu.ValueInjecter;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CameraCard
{
public partial class MainForm : Form
{
private ICameraHelper _cameraHelper = new OpenCvSharpCameraHelper();
private CVRHelper _cvrHelper = new CVRHelper();
public MainForm()
{
InitializeComponent();
this.versionLabel.Alignment = ToolStripItemAlignment.Right;
this.versionLabel.Text += Assembly.GetExecutingAssembly().GetName().Version.ToString();
this.currentVersion.Text += this.versionLabel.Text;
this.loginUserName.Text += User.UserName;
this.userRealName.Text += User.RealName;
this.userOrgan.Text += User.Organ;
//init
if (this.pageSizeSelector.DataSource == null)
{
this.pageSizeSelector.SelectedIndexChanged -= this.pageSizeSelector_SelectedIndexChanged;
this.pageSizeSelector.DataSource = new List<object> {
new { Value=20,Text="20条/页"},
new { Value=50,Text="50条/页"},
new { Value=100,Text="100条/页"}
};
this.pageSizeSelector.SelectedIndexChanged += this.pageSizeSelector_SelectedIndexChanged;
}
if (this.imageStatusSelector.DataSource == null)
{
this.imageStatusSelector.SelectedIndexChanged -= this.imageStatusSelctor_SelectedIndexChanged;
this.imageStatusSelector.DataSource = new List<object> {
new { Value=false,Text="全部"},
new { Value=true,Text="已采集"},
new { Value=false,Text="未采集"}
};
this.imageStatusSelector.SelectedIndexChanged += this.imageStatusSelctor_SelectedIndexChanged;
}
if (this.uploadStatusSelector.DataSource == null)
{
this.uploadStatusSelector.SelectedIndexChanged -= this.uploadStatusSelector_SelectedIndexChanged;
this.uploadStatusSelector.DataSource = new List<object> {
new { Value=false,Text="全部"},
new { Value=true,Text="已上传"},
new { Value=false,Text="未上传"}
};
this.uploadStatusSelector.SelectedIndexChanged += this.uploadStatusSelector_SelectedIndexChanged;
}
if (this.checkStatusSelector.DataSource == null)
{
this.checkStatusSelector.SelectedIndexChanged -= this.checkStatusSelector_SelectedIndexChanged;
this.checkStatusSelector.DataSource = new List<object> {
new { Value=false,Text="全部"},
new { Value=true,Text="已审核"},
new { Value=false,Text="未审核"}
};
this.checkStatusSelector.SelectedIndexChanged += this.checkStatusSelector_SelectedIndexChanged;
}
if (this.cardStatusSelector.DataSource == null)
{
this.cardStatusSelector.SelectedIndexChanged -= this.cardStatusSelector_SelectedIndexChanged;
this.cardStatusSelector.DataSource = new List<object> {
new { Value=false,Text="全部"},
new { Value=true,Text="已验证"},
new { Value=false,Text="未验证"}
};
this.cardStatusSelector.SelectedIndexChanged += this.cardStatusSelector_SelectedIndexChanged;
}
}
private void MainFrom_Load(object sender, EventArgs e)
{
//截图
this.CreateRect();
//摄像头预览
this._cameraHelper.OnCameraChange = o =>
{
this.Invoke(new Action(() =>
{
try
{
this.cameraSelector.Items.Clear();
this.cameraSelector.Text = string.Empty;
foreach (var item in o)
{
this.cameraSelector.Items.Add(item);
}
if (this.cameraSelector.Items.Count > 0)
{
this.cameraSelector.SelectedIndex = 0;
}
else
{
this.cameraSelector.Text = "没有检测到USB摄像头";
}
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
}));
};
this._cameraHelper.OnFrame = o =>
{
this.Invoke(new Action(() =>
{
try
{
cameraRender.Image?.Dispose();
cameraRender.Image = o;
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
}));
};
this.cameraSelector.SelectedIndexChanged += new EventHandler((s, o) =>
{
try
{
this._cameraHelper.SwitchCamera((s as ComboBox).SelectedIndex);
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
});
this._cameraHelper.Start();
//身份读卡器
this._cvrHelper.OnConnect = new Action<bool>(o =>
{
this.Invoke(new Action(() =>
{
this.statusLabel.Text = o ? "读卡器已连接" : "读卡器未连接";
}));
});
this._cvrHelper.OnRead = new Action<IdCardModel>(o =>
{
this.Invoke(new Action(() =>
{
try
{
this.UpdateIdCardUI(o);
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
}));
});
this._cvrHelper.Start();
//自动更新
if (this.autoUpdateOption.Checked)
{
this.checkUpdate_Click(null, null);
}
}
private void cameraSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this._cameraHelper.SwitchCamera(this.cameraSelector.SelectedIndex);
}
private int _rectWidth = 351;
private int _rectHeight = 448;
private int _photoWidth;
private int _photoHeight;
private Rectangle _rect;
private Pen _pen;
public static User User { get; set; }
private void CreateRect()
{
this._photoWidth = 351;
this._photoHeight = 448;
this._rectWidth = this._photoWidth / 2;
this._rectHeight = this._photoHeight / 2;
//
var x = this.cameraRender.Width / 2 - this._rectWidth / 2;
var y = this.cameraRender.Height / 2 - this._rectHeight / 2;
this._rect = new Rectangle(x, y, _rectWidth, _rectHeight);
this._pen = new Pen(Color.Green);
this._pen.DashStyle = DashStyle.Dash;
}
public static void LoadData(ProgressForm progress)
{
try
{
var url = ConfigurationManager.AppSettings["pull"];
var client = HttpClientFactory.Create();
var content = new StringContent(JsonConvert.SerializeObject(new { userName = MainForm.User.UserName }), Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content).Result;
var resultValue = response.Content.ReadAsStringAsync().Result;
if (response.StatusCode == HttpStatusCode.OK)
{
var result = JsonConvert.DeserializeObject<PullResponse>(resultValue);
if (result.code == 0)
{
using (var db = new MyDbContext())
{
int i = 1;
foreach (var item in result.data)
{
var entity = db.Students.FirstOrDefault(o => o.Id == item.Id);
if (entity == null)
{
entity = item;
db.Students.Add(entity);
progress?.SetProgress($"正在加载{entity.Name}", i * 100 / result.data.Count);
}
else
{
progress?.SetProgress($"正在更新{entity.Name}", i * 100 / result.data.Count);
entity.InjectFrom(item);
}
db.SaveChanges();
i++;
}
}
}
else
{
MessageBox.Show($"错误代码:{result.code},错误消息:{result.message}");
}
}
else
{
MessageBox.Show(resultValue);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void cameraRender_Paint(object sender, PaintEventArgs e)
{
try
{
e.Graphics.DrawRectangle(this._pen, _rect);
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
}
private void shotBtn_Click(object sender, EventArgs e)
{
try
{
using (var bitmap = (this.cameraRender.Image.Clone() as Image))
{
using (var bitmap2 = bitmap.ClipImage(this.cameraRender.Width, this.cameraRender.Height, this._rectWidth, this._rectHeight))
{
this.photo.Image?.Dispose();
this.photo.Image = bitmap2.ResizeImage(this._photoWidth, this._photoHeight);
var base64Value = this.photo.Image.ToBase64();
}
}
}
catch (Exception ex)
{
this.log.Text += ex.Message;
this.log.Text += ex.StackTrace;
this.log.Text += Environment.NewLine;
}
}
private void UpdateIdCardUI(IdCardModel model)
{
this.idCard.idcPicture.Image?.Dispose();
this.idCard.idcPicture.Image = model.Image;
if (model.Type == "居民身份证")
{
this.idCard.idcAddressLabel.Visible = true;
this.idCard.idcAddressValue.Visible = true;
this.idCard.idcCnNameLabel.Visible = false;
this.idCard.idcCnNameValue.Visible = false;
this.idCard.idcAddressLabel.Visible = true;
this.idCard.idcAddressValue.Visible = true;
this.idCard.idcAddressValue.Text = model.Address;
this.idCard.idcNameLable.Text = "民族:";
this.idCard.idcNationCodeLabel.Text = "民族代码:";
this.idCard.idcIdCardNoLabel.Text = "身份证号";
}
else
{
this.idCard.idcAddressLabel.Visible = false;
this.idCard.idcAddressValue.Visible = false;
this.idCard.idcCnNameLabel.Visible = true;
this.idCard.idcCnNameValue.Visible = true;
this.idCard.idcAddressLabel.Visible = false;
this.idCard.idcAddressValue.Visible = false;
this.idCard.idcCnNameValue.Text = model.CnName;
this.idCard.idcNameLable.Text = "国籍:";
this.idCard.idcNationCodeLabel.Text = "国籍代码:";
this.idCard.idcIdCardNoLabel.Text = "证件号码";
}
this.idCard.idcNameValue.Text = model.Name;
this.idCard.idcSexValue.Text = model.Sex;
this.idCard.idcNationValue.Text = model.Nation;
this.idCard.idcNationCodeValue.Text = model.NationCode;
this.idCard.idcBirthdayValue.Text = model.Birthday;
this.idCard.idcIdCardNoValue.Text = model.IdCardNo;
this.idCard.idcDepartmentValue.Text = model.Department;
this.idCard.idcValidDateValue.Text = $"{model.ValidDateStart}-{model.ValidDateEnd}";
this.idCard.idcSamIDValue.Text = model.SamID;
using (var db = new MyDbContext())
{
var student = db.Students.FirstOrDefault(o => o.IdCardNo == model.IdCardNo);
if (student != null)
{
student.HasIdCard = true;
student.CardType = model.Type;
db.SaveChanges();
//
this.photo.Image?.Dispose();
if (student.Image != null)
{
using (var ms = new MemoryStream(Convert.FromBase64String(student.Image)))
{
this.photo.Image = System.Drawing.Image.FromStream(ms);
}
}
//
this.stuNameValue.Text = student.Name;
this.stuSexValue.Text = student.Sex;
this.stuNationValue.Text = student.Nation;
this.stuCardTypeValue.Text = student.CardType;
this.stuCardNoValue.Text = student.IdCardNo;
this.stuBirthdayValue.Text = student.Birthday;
this.stuExamNoValue.Text = student.ExamNo;
this.stuLanguageNoValue.Text = student.LanguageNo;
this.stuStudentTypeValue.Text = student.StudentType;
this.stuClassValue.Text = student.Class;
this.stuYearValue.Text = student.Year;
this.stuSchoolValue.Text = student.School;
}
}
}
private void checkUpdate_Click(object sender, EventArgs e)
{
var loading = new LoadingForm("检查中");
this.Run(() => loading.ShowDialog());
Task.Run(() =>
{
try
{
var url = ConfigurationManager.AppSettings["update"];
var client = HttpClientFactory.Create();
var content = new StringContent(JsonConvert.SerializeObject(new { userName = MainForm.User.UserName }), Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content).Result;
var result = JsonConvert.DeserializeObject<UpdateResponse>(response.Content.ReadAsStringAsync().Result);
if (result.code == 0)
{
if (result.data.version == this.versionLabel.Text)
{
MessageBox.Show("当前已经是最新版本");
}
else
{
var url2 = result.data.file;
var client2 = HttpClientFactory.Create();
using (var stream = client2.GetStreamAsync(url2).Result)
{
using (var fs = new FileStream("application.zip", FileMode.Create))
{
var buffer = new byte[1024];
stream.CopyTo(fs);
}
}
//
var file = Path.Combine(Application.StartupPath, "AutoUpdate.exe");
var file2 = Path.Combine(Application.StartupPath, "update.exe");
File.Copy(file, file2, true);
var info = new ProcessStartInfo
{
FileName = file2,
Arguments = Application.ExecutablePath,
WorkingDirectory = Application.StartupPath
};
Process.Start(info);
}
}
else
{
MessageBox.Show($"错误代码:{result.code},错误消息:{result.message}");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
loading.CloseForm();
}
});
}
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
this.shotBtn_Click(sender, e);
}
}
//closeing
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
this._cameraHelper.Dispose();
this._pen.Dispose();
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
private void grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (this.dataGrid.Columns[e.ColumnIndex].Name.Equals("Image"))
{
if (e.Value != null)
{
using (var ms = new MemoryStream(Convert.FromBase64String(e.Value as string)))
{
e.Value = System.Drawing.Image.FromStream(ms);
}
}
}
}
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPage.Text == "图像采集")
{
}
else if (e.TabPage.Text == "采集进度")
{
this.RunWithLoading(RefreshGroup);
}
else if (e.TabPage.Text == "图像管理")
{
this.RunWithLoading(RefreshData);
}
}
private void RefreshGroup()
{
using (var db = new MyDbContext())
{
var list = db.Students.GroupBy(o => o.Class, (k, g) => new GroupData
{
Class = k,
Total = g.Count(),
HasImage = g.Sum(c => c.HasImage ? 1 : 0),
NotHasImage = g.Sum(c => c.HasImage ? 0 : 1),
HasUpload = g.Sum(c => c.HasUploaded ? 1 : 0),
NotHasUpload = g.Sum(c => c.HasUploaded ? 0 : 1),
HasChecked = g.Sum(c => c.HasChecked ? 1 : 0),
IsNotChecked = g.Sum(c => c.HasChecked ? 0 : 1),
Progress = g.Sum(c => c.HasUploaded ? 1 : 0) / (g.Count() * 1.0f)
})
.OrderBy(o => o.Class)
.ToList();
var total = new GroupData
{
Class = "合计",
Total = list.Sum(o => o.Total),
HasImage = list.Sum(o => o.HasImage),
NotHasImage = list.Sum(o => o.NotHasImage),
HasUpload = list.Sum(o => o.HasUpload),
NotHasUpload = list.Sum(o => o.NotHasUpload),
HasChecked = list.Sum(o => o.HasChecked),
IsNotChecked = list.Sum(o => o.HasChecked),
Progress = list.Sum(o => o.HasUpload) / (list.Sum(o => o.Total) * 1.0f)
};
list.Insert(0, total);
groupGrid.DataSource = list;
var headers = new string[] { "班级", "总人数", "已采集", "未采集", "已上传", "未上传", "已审核", "未审核", "完成进度" };
for (int i = 0; i < headers.Length; i++)
{
groupGrid.Columns[i].HeaderText = headers[i];
if (headers[i] == "完成进度")
{
groupGrid.Columns[i].DefaultCellStyle.Format = "P";
}
}
}
}
private void RefreshData()
{
var pageIndex = this.pageIndexSelector.SelectedValue == null ? 1 : Convert.ToInt32(this.pageIndexSelector.SelectedValue?.ToString());
var classValue = this.classSelector.SelectedValue == null ? "全部" : this.classSelector.SelectedValue.ToString();
using (var db = new MyDbContext())
{
//class
if (this.classSelector.DataSource == null)
{
this.classSelector.SelectedIndexChanged -= this.classSelector_SelectedIndexChanged;
var classList = db.Students.Select(o => new { o.Class }).Distinct().OrderBy(o => o.Class).ToList();
classList.Insert(0, new { Class = "全部" });
this.classSelector.DataSource = classList;
this.classSelector.SelectedValue = classValue;
this.classSelector.SelectedIndexChanged += this.classSelector_SelectedIndexChanged;
}
//search
var query = db.Set<Student>().AsQueryable();
if (classValue != "全部")
{
query = query.Where(o => o.Class == classValue);
}
if (imageStatusSelector.Text != "全部")
{
var imageStatus = (bool)imageStatusSelector.SelectedValue;
query = query.Where(o => o.HasImage == imageStatus);
}
if (uploadStatusSelector.Text != "全部")
{
var uploadStatus = (bool)uploadStatusSelector.SelectedValue;
query = query.Where(o => o.HasUploaded == uploadStatus);
}
if (checkStatusSelector.Text != "全部")
{
var checkedStatus = (bool)checkStatusSelector.SelectedValue;
query = query.Where(o => o.HasChecked == checkedStatus);
}
if (cardStatusSelector.Text != "全部")
{
var cardStatus = (bool)cardStatusSelector.SelectedValue;
query = query.Where(o => o.HasIdCard == cardStatus);
}
var total = query.Count();
this.totalValue.Text = $"共{total}条";
var pageSize = (int)this.pageSizeSelector.SelectedValue;
var paged = new PagedList(pageSize);
paged.TotalCount = total;
var pageCount = paged.PageCount();
pageIndex = pageIndex > pageCount ? 1 : pageIndex;
this.totalPageValue.Text = $"共{pageCount}页";
if (this.dataGrid.Rows.Count > 0)
{
foreach (DataGridViewRow row in this.dataGrid.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (this.dataGrid.Columns[cell.ColumnIndex].Name == "图像")
{
(cell.Value as Image).Dispose();
}
}
}
}
this.dataGrid.DataSource = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
var pageList = new List<object>();
for (int i = 0; i < paged.PageCount(); i++)
{
pageList.Add(new { Value = i + 1, Text = $"第{i + 1}页" });
}
this.pageIndexSelector.SelectedIndexChanged -= this.pageIndexSelector_SelectedIndexChanged;
this.pageIndexSelector.DataSource = pageList;
this.pageIndexSelector.SelectedValue = pageIndex;
this.pageIndexSelector.SelectedIndexChanged += this.pageIndexSelector_SelectedIndexChanged;
this.pageMenu.Controls.Clear();
paged.PageIndex = pageIndex;
if (paged.HasPrev())
{
this.pageMenu.Controls.Add(new Button { Text = "<", Width = 30, Tag = pageIndex - 1 });
}
foreach (var item in paged.GetPageIndexs())
{
var button = new Button { Text = item.ToString(), Width = 30, Tag = item };
if (item == pageIndex)
{
button.ForeColor = Color.Red;
}
this.pageMenu.Controls.Add(button);
}
if (paged.HasNext())
{
this.pageMenu.Controls.Add(new Button { Text = ">", Width = 30, Tag = pageIndex + 1 });
}
foreach (var item in this.pageMenu.Controls)
{
(item as Button).Click += (s, e) =>
{
this.pageIndexSelector.SelectedValue = Convert.ToInt32((s as Button).Tag);
};
}
}
}
private void pageIndexSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void classSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void pageSizeSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void searchBtn_Click(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void pull_Click(object sender, EventArgs e)
{
var progress = new ProgressForm("更新中", "正在下载数据", 0, 100);
this.Run(() => progress.ShowDialog());
Task.Run(() =>
{
try
{
MainForm.LoadData(progress);
progress.CloseForm();
this.RunWithLoading(RefreshData);
}
catch (Exception ex)
{
progress.CloseForm();
MessageBox.Show(ex.Message);
}
});
}
private void save_Click(object sender, EventArgs e)
{
using (var db = new MyDbContext())
{
var student = db.Students.FirstOrDefault(o => o.IdCardNo == this.idCard.idcIdCardNoValue.Text);
if (student != null)
{
student.HasImage = true;
student.Image = this.photo.Image.ToBase64();
db.SaveChanges();
}
}
}
private void imageStatusSelctor_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void uploadStatusSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void checkStatusSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void cardStatusSelector_SelectedIndexChanged(object sender, EventArgs e)
{
this.RunWithLoading(RefreshData);
}
private void push_Click(object sender, EventArgs e)
{
var progress = new ProgressForm("更新中", "正在上传", 0, 100);
this.Run(() => progress.ShowDialog());
Task.Run(() =>
{
try
{
this.UploadData(progress);
progress.CloseForm();
this.RunWithLoading(RefreshData);
}
catch (Exception ex)
{
progress.CloseForm();
MessageBox.Show(ex.Message);
}
});
}
private void UploadData(ProgressForm progress)
{
try
{
using (var db = new MyDbContext())
{
var query = db.Set<Student>().AsQueryable();//.Where(o => o.HasImage);
if (classSelector.Text != "全部")
{
var classValue = imageStatusSelector.SelectedValue as string;
query = query.Where(o => o.Class == classValue);
}
if (imageStatusSelector.Text != "全部")
{
var imageStatus = (bool)imageStatusSelector.SelectedValue;
query = query.Where(o => o.HasImage == imageStatus);
}
if (uploadStatusSelector.Text != "全部")
{
var uploadStatus = (bool)uploadStatusSelector.SelectedValue;
query = query.Where(o => o.HasUploaded == uploadStatus);
}
if (checkStatusSelector.Text != "全部")
{
var checkedStatus = (bool)checkStatusSelector.SelectedValue;
query = query.Where(o => o.HasChecked == checkedStatus);
}
if (cardStatusSelector.Text != "全部")
{
var cardStatus = (bool)cardStatusSelector.SelectedValue;
query = query.Where(o => o.HasIdCard == cardStatus);
}
var total = query.Count();
var url = ConfigurationManager.AppSettings["push"];
int i = 1;
foreach (var item in query)
{
try
{
var client = HttpClientFactory.Create();
var content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content).Result;
var result = JsonConvert.DeserializeObject<PullResponse>(response.Content.ReadAsStringAsync().Result);
if (result.code == 0)
{
progress?.SetProgress($"进度{i}/{total}", i * 100 / total);
item.HasUploaded = true;
db.SaveChanges();
}
else
{
MessageBox.Show($"错误代码:{result.code},错误消息:{result.message}");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
i++;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void homepageLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start(ConfigurationManager.AppSettings["home"]);
}
private void serviceLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start(ConfigurationManager.AppSettings["service"]);
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
var redioButton = sender as RadioButton;
if (redioButton.Checked)
{
Configuration configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
configuration.AppSettings.Settings["check"].Value = redioButton.Text;
configuration.Save();
ConfigurationManager.RefreshSection("appSettings");
}
}
}
}