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();
}
#======================简化一下
C# 重新启动程序(并非重启计算机)
2008年09月16日 星期二 14:33
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);