c# - WinForms - 如何在应用程序设置中保存组合框选择?

标签 c# winforms binding controls application-settings

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

项目列表是枚举的值列表。

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

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

通常,将控件的属性 Hook 到某个设置(在设计器中)是在控件的属性中完成的,在 (ApplicationSettings) 下 - 但没有 SelectedXXX 属性出现在那里。

FWIW,在 toostrip 绑定(bind)组合框的特定情况下,实际的 SelectedXXX 属性实际上在 toolStripComboInstance.ComboBox.SelectedXXX 处找到了更深一点。

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

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 属性它与应用程序设置 基础架构(及其在设计器中的支持)一起工作?

最佳答案

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

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


}

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

关于c# - WinForms - 如何在应用程序设置中保存组合框选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909072/

相关文章:

c# - WinForms TreeView - 如何手动 "highlight"节点(就像它被点击一样)

c# - 如何将 ComboBox 绑定(bind)到具有深层 DisplayMember 和 ValueMember 属性的通用列表?

silverlight - 自定义 ValidationAttribute 的 ValidationErrors 未正确显示

c# - 谁应该将 WPF/MVVM 中的 VIewModel 称为逻辑单元或 View ?

C#重载构造函数不能仅在参数修饰符的使用上有所不同

c# - 获取 .NET Framework 目录路径

c# - 如何在 C# 中向我的 GUI 添加计算?

.net - 如何隐藏主窗体并仍然运行程序?

c# - 单元测试顺序约定?

c# - 列文本溢出列宽