winforms动态组合框默认值
winforms dynamic combobox default value
好的,所以我有两个组合框,一个装有修饰符(ctrl、alt、shift、windows 键),另一个带有键(A-Z、F1-F12)。
我想将这些组合框的默认值更改为 "Properties.Settings.Default.*" 中保存的值,但不知何故它不起作用。
这是填充组合框的代码:
private void Settings_Load(object sender, EventArgs e)
{
KeyModifiers[] modifierArray = new KeyModifiers[] { KeyModifiers.Alt, KeyModifiers.Control,
KeyModifiers.Shift, KeyModifiers.Windows };
var dataSourceModifiers = new List<KeyModifiers>();
foreach(KeyModifiers modifier in modifierArray )
{
dataSourceModifiers.Add(modifier);
}
this.comboboxClickerModifier.DataSource = dataSourceModifiers;
Keys[] keysArray = new Keys[] { Keys.A, Keys.B, Keys.C, Keys.D, Keys.E, Keys.F, Keys.G, Keys.H, Keys.I, Keys.J, Keys.K,
Keys.L, Keys.M, Keys.N, Keys.O, Keys.P, Keys.Q, Keys.R, Keys.S, Keys.T, Keys.U, Keys.V,
Keys.W, Keys.X, Keys.Y, Keys.Z, Keys.F1, Keys.F2, Keys.F1, Keys.F2, Keys.F3, Keys.F4, Keys.F5,
Keys.F6, Keys.F7, Keys.F8, Keys.F9, Keys.F10, Keys.F11, Keys.F12};
var dataSourceKeys = new List<Keys>();
foreach (Keys key in keysArray)
{
dataSourceKeys.Add(key);
}
this.comboboxClickerKey.DataSource = dataSourceKeys;
// Down here are the ways I tried to set the default value
comboboxClickerKey.Text = Properties.Settings.Default.Key.ToString();
comboboxClickerKey.SelectedIndex = comboboxClickerKey.Items.IndexOf(Properties.Settings.Default.Key);
comboboxClickerKey.SelectedItem = Properties.Settings.Default.Key;
comboboxClickerModifier.SelectedItem = Properties.Settings.Default.Modifier;
}
在代码的底部,您可以看到我尝试设置默认值的方法,但都失败了。
设置:
启动时的window:
我建议存储在 Properties.Settings.Default.IndexModifier
和 Properties.Settings.Default.IndexKey
(类型 int
)中,只选择相应 ComboBox
控件的索引,例如:
Properties.Settings.Default.IndexKey=comboboxClickerKey.SelectedIndex;
Properties.Settings.Default.Save();
并分别使用该索引值操作以强制返回 ComboBox
控件以显示适当的项目,例如:
comboboxClickerKey.SelectedIndex=Properties.Settings.Default.IndexKey
代码会更简洁,排除大量的类型转换。此外,这里有一个 link 描述各种 ComboBox 数据绑定技术的文章(与 ASP.NET 相关的示例也可以很容易地适用于 WinForms 应用程序):http://www.codeproject.com/Tips/214418/Binding-DropDownList-to-various-data-structures.
注意:关于您的代码片段,最接近工作解决方案的行是:
comboboxClickerKey.Text = Properties.Settings.Default.Key.ToString();
接下来的 3 行看起来不正确,很可能会导致异常。如果您不显式绑定 DataTextField
和 DataValueField
,它可能会起作用;否则可能会失败。
希望这可能有所帮助。
好的,所以我有两个组合框,一个装有修饰符(ctrl、alt、shift、windows 键),另一个带有键(A-Z、F1-F12)。 我想将这些组合框的默认值更改为 "Properties.Settings.Default.*" 中保存的值,但不知何故它不起作用。
这是填充组合框的代码:
private void Settings_Load(object sender, EventArgs e)
{
KeyModifiers[] modifierArray = new KeyModifiers[] { KeyModifiers.Alt, KeyModifiers.Control,
KeyModifiers.Shift, KeyModifiers.Windows };
var dataSourceModifiers = new List<KeyModifiers>();
foreach(KeyModifiers modifier in modifierArray )
{
dataSourceModifiers.Add(modifier);
}
this.comboboxClickerModifier.DataSource = dataSourceModifiers;
Keys[] keysArray = new Keys[] { Keys.A, Keys.B, Keys.C, Keys.D, Keys.E, Keys.F, Keys.G, Keys.H, Keys.I, Keys.J, Keys.K,
Keys.L, Keys.M, Keys.N, Keys.O, Keys.P, Keys.Q, Keys.R, Keys.S, Keys.T, Keys.U, Keys.V,
Keys.W, Keys.X, Keys.Y, Keys.Z, Keys.F1, Keys.F2, Keys.F1, Keys.F2, Keys.F3, Keys.F4, Keys.F5,
Keys.F6, Keys.F7, Keys.F8, Keys.F9, Keys.F10, Keys.F11, Keys.F12};
var dataSourceKeys = new List<Keys>();
foreach (Keys key in keysArray)
{
dataSourceKeys.Add(key);
}
this.comboboxClickerKey.DataSource = dataSourceKeys;
// Down here are the ways I tried to set the default value
comboboxClickerKey.Text = Properties.Settings.Default.Key.ToString();
comboboxClickerKey.SelectedIndex = comboboxClickerKey.Items.IndexOf(Properties.Settings.Default.Key);
comboboxClickerKey.SelectedItem = Properties.Settings.Default.Key;
comboboxClickerModifier.SelectedItem = Properties.Settings.Default.Modifier;
}
在代码的底部,您可以看到我尝试设置默认值的方法,但都失败了。
设置:
启动时的window:
我建议存储在 Properties.Settings.Default.IndexModifier
和 Properties.Settings.Default.IndexKey
(类型 int
)中,只选择相应 ComboBox
控件的索引,例如:
Properties.Settings.Default.IndexKey=comboboxClickerKey.SelectedIndex;
Properties.Settings.Default.Save();
并分别使用该索引值操作以强制返回 ComboBox
控件以显示适当的项目,例如:
comboboxClickerKey.SelectedIndex=Properties.Settings.Default.IndexKey
代码会更简洁,排除大量的类型转换。此外,这里有一个 link 描述各种 ComboBox 数据绑定技术的文章(与 ASP.NET 相关的示例也可以很容易地适用于 WinForms 应用程序):http://www.codeproject.com/Tips/214418/Binding-DropDownList-to-various-data-structures.
注意:关于您的代码片段,最接近工作解决方案的行是:
comboboxClickerKey.Text = Properties.Settings.Default.Key.ToString();
接下来的 3 行看起来不正确,很可能会导致异常。如果您不显式绑定 DataTextField
和 DataValueField
,它可能会起作用;否则可能会失败。
希望这可能有所帮助。