3

我在工具条中嵌入了一个组合框 - 一个ToolStripCombobox实例。

项目列表是 的值列表enum

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

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

通常,将控件的属性挂钩到某个设置是(在设计器中)从控件的属性中完成的,(ApplicationSettings)但没有任何SelectedXXX属性显示在那里。

FWIW,在toostrip绑定组合框的特殊情况下,实际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一起使用的方式公开属性?

4

1 回答 1

1

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

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


}

请注意,除了确认可以将控件添加到 ToolStrip 并且可以选择属性之外,我还没有对此进行测试 - 您可能需要添加 PropertyChanged 事件以使其充分工作。

于 2013-08-15T12:46:57.193 回答