WinForms-如何在应用程序中保存组合框选择';s设置

本文关键字:选择 设置 组合 应用程序 保存 WinForms- | 更新日期: 2023-09-27 18:25:10

我在toolstrip中嵌入了一个组合框——一个ToolStripCombobox实例。

项目列表是enum的值的列表。

我希望能够加载/保存选择Selected[Index|Item|Text|...]属性之一,从/到应用程序的Settings"机制"。

理想情况下,我希望能够从设计师那里做到这一点。

通常,将控件的属性挂接到某个设置是在(ApplicationSettings)下从控件的属性(在设计器中)完成的,但SelectedXXX属性都不显示在其中。

FWIW,在toodstrip-bound组合框的特定情况下,实际的SelectedXXX属性实际上在toolStripComboInstance.ComboBox.SelectedXXX处发现得更深一些。

到目前为止,我所做的是在代码中配置绑定:

m_runTypeCombo   //the toolstrip control
    .ComboBox    //the actual combobox
    .DataBindings.Add(
    new System.Windows.Forms.Binding(
        "SelectedItem", 
        global::JavaPad.Properties.Settings.Default, 
        "RunType", 
        true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged
    )
);

上面的工作,但我希望一些更干净的东西(即基于设计师)。如果内置的ToolStripCombobox不支持这一点,是否有一种(简单的)方法可以从中派生我自己的类型,并以与应用程序设置基础结构(及其在设计器中的支持)一起工作的方式公开SelectedXXX属性?

WinForms-如何在应用程序中保存组合框选择';s设置

如果你愿意将TooltipComboBox包装在你自己的自定义控件中,你可以这样做:

public class MyCombo : ToolStripComboBox
{
    [SettingsBindable(true)]
    public int SelectedIndex
    {
        get { return ComboBox.SelectedIndex; }
        set { ComboBox.SelectedIndex = value; }
    }

}

请注意,除了确认我可以将控件添加到ToolStrip,并且我可以选择一个属性之外,我还没有对此进行过测试——您可能需要添加PropertyChanged Events才能使其完全工作。