private void ReadConfig()
{
Properties.Settings.Default.Reload();
this.tbFtpIp.Text = Properties.Settings.Default.ftpServer;
this.tbFtpPort.Text = Properties.Settings.Default.ftpPort;
this.tbUserName.Text = Properties.Settings.Default.ftpUser;
this.tbPassword.Text = Properties.Settings.Default.ftpPassword;
this.tbFtpTimer.Text = Properties.Settings.Default.ftpFrequence;
this.tbFileType.Text = Properties.Settings.Default.FileType;
this.tbLocalDirectory.Text = Properties.Settings.Default.localFilePath;
this.tbTimer.Text = Properties.Settings.Default.Frequence;
}
private void btnSaveFtpConfig_Click(object sender, EventArgs e)
{
try
{
SaveConfig("ftpServer", tbFtpIp.Text, false);
SaveConfig("ftpPort", tbFtpPort.Text, false);
SaveConfig("ftpUser", tbUserName.Text, false);
SaveConfig("ftpPassword", tbPassword.Text, false);
SaveConfig("ftpFrequence", tbFtpTimer.Text, false);
SaveConfig("localFilePath", tbLocalDirectory.Text, false);
SaveConfig("FileType", tbFileType.Text, false);
SaveConfig("Frequence", tbTimer.Text, true);
DialogResult dr=MessageBox.Show("配置信息保存成功,请重新启动应用程序","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1);
if (dr == DialogResult.Yes)
{
Application.ExitThread();
Restart();
}
}
catch
{
MessageBox.Show("保存配置信息失败,请确保文件完整");
}
}
private void SaveConfig(string varient, string value, bool Reload)
{
// 保存 Applicationi 范围的设置
string configFileName = Application.ExecutablePath + ".config";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(configFileName);
string configString = "configuration/applicationSettings/ftpTransport.Properties.Settings/setting[@name='" + varient + "']/value";
System.Xml.XmlNode configNode = doc.SelectSingleNode(configString);
if (configNode != null)
{
configNode.InnerText = value;
doc.Save(configFileName);
if (Reload)
{
// 刷新应用程序设置,这样下次读取时才能读到最新的值。
Properties.Settings.Default.Reload();
}
}
}
private void Restart()
{
Thread thtmp = new Thread(new ParameterizedThreadStart(run));
object appName = Application.ExecutablePath;
Thread.Sleep(2000);
thtmp.Start(appName);
}
private void run(Object obj)
{
Process ps = new Process();
ps.StartInfo.FileName = obj.ToString();
ps.Start();
}
#======================简化一下
private void Restart()
{ Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(2000); thtmp.Start(appName); } private void run(Object obj) { Process ps = new Process(); ps.StartInfo.FileName = obj.ToString(); ps.Start(); } /// <summary> /// 设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConfig_Click(object sender, EventArgs e) { frmHikClientConfig frm = new frmHikClientConfig(); if (frm.ShowDialog() == DialogResult.OK) { Application.ExitThread(); Restart(); } } |
//============或者(下面的没测试)
clossing事件中,用Process.Start启动一下自己就可以。
在主窗体的closing事件中,加入如下代码:
if ( MessageBox.Show("要重新启动嘛?","提示", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question) == DialogResult.Yes)
System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);