因此,我尝试在设置页面上使用可用的com端口填充组合框。
一旦选择了设置,我希望保留该设置,并通过保存按钮使用保存设置功能全局使用。我认为必须有一个比这更简单的方法!
private void Form2_Load(object sender, EventArgs e)
{
pumpPort = SerialPort.GetPortNames();
this.comboBox1.Items.AddRange(pumpPort);
this.comboBox1.SelectedItem = Properties.Settings.Default.Setting;
Properties.Settings.Default.Save();
switch (Properties.Settings.Default.Setting)
{
case "COM1":
this.comboBox1.SelectedItem = Properties.Settings.Default.COMPORT1;
break;
case "COM2":
this.comboBox1.SelectedItem = Properties.Settings.Default.COMPORT2;
break;
default:
break;
}
毋庸置疑,form2
关闭后,这不会保留任何设置。我希望即使在程序退出后再保留form2
。
答案 0 :(得分:0)
您需要更新默认设置并在comboBox1更改事件上调用save。
像这样:
private void Init()
{
...
this.comboBox1.SelectedIndexChanged +=
new System.EventHandler(ComboBox1_SelectedIndexChanged);
}
private void ComboBox1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
//other event code
...
var comboBox = (ComboBox)sender;
var port = (string)comboBox1.SelectedItem;
Properties.Settings.Default.Setting = port;
Properties.Settings.Default.Save();
...
}
答案 1 :(得分:0)
执行此操作时:
this.comboBox1.SelectedItem = Properties.Settings.Default.Setting;`
您正在设置组合框的选定项目。
我认为你真的想扭转那种局面。
Properties.Settings.Default.Setting = this.comboBox1.SelectedItem
但是,您可能希望在组合框的更改事件中执行分配,这样当用户选择该值时,您的设置就会更新并保存。
private void Form2_Load(object sender, EventArgs e)
{
pumpPort = SerialPort.GetPortNames();
this.comboBox1.Items.AddRange(pumpPort);
}
public void comboBox1_SelectedIndexChanged(object sender, EventArgs eventArgs)
{
Properties.Settings.Default.Setting = this.comboBox1.SelectedItem;
Properties.Settings.Default.Save();
}
正如@wbennett在他的回答中指出的那样,确保indexchanged事件在你的代码隐藏中设置,或者最好在你的设计器中设置。