【问题标题】:Enhance combo box in Visual Studio增强 Visual Studio 中的组合框
【发布时间】:2011-12-14 19:41:07
【问题描述】:

我已经实现了一个组合框,其中有一个复选框(Windows 窗体应用程序)。这工作得很好。

使用:C#、Visual Studio 2010。

问题: 我的组合框的问题是每次选择后下拉菜单都会关闭。

问题: 在我选择多个项目之前,下拉菜单是否有可能保持固定?

只是想知道是否有办法做到这一点。

谢谢。

【问题讨论】:

  • WinForms、WPF 还是其他?请添加标签。
  • 您如何设想用户交流他们已完成选择?这个想法违反了组合框的一些公认的用户约定 - 最好使用自定义解决方案(例如,在对话框或小表单上弹出 CheckListBox)。
  • @JohnArlen 例如 look-and-feel 您可以查看 Windows ExplorerExcel。跨度>

标签: c# winforms visual-studio-2010 combobox


【解决方案1】:

我认为 Wpf 扩展工具包 CheckComboBox 正是您尝试做的。 有关详细信息,请参阅以下链接。

你可以在你的winform中添加这个wpf控件

http://wpftoolkit.codeplex.com/wikipage?title=CheckComboBox&referringTitle=Home

【讨论】:

  • 是的。但链接表明它仍将被添加到工具包中。
【解决方案2】:

假设您正在使用 Winforms:

public class CheckComboBox : ComboBox
{
    Timer _timer = new Timer();

    public CheckComboBox()
    {
        _timer.Interval = 1;
        _timer.Tick += timer_Tick;      
    }
    protected override void OnDropDownClosed(EventArgs e)
    {
        base.OnDropDownClosed(e);
        if (checkbox has been clicked) {
            _timer.Start();
        }
    }

    void timer_Tick(object sender, EventArgs e)
    {
        _timer.Stop();
        DroppedDown = true; // Reopens dropdown.
    }
}

【讨论】:

  • 这很奇怪,因为菜单会关闭然后再次打开,他应该继承控件并更改进行选择时发生的默认行为。
【解决方案3】:

如果您阻止复选框在单击时获得焦点,您可以阻止组合框关闭。

为此,您需要从 CheckBox 类派生并覆盖构造函数中的控制标志:

SetStyle(ControlStyles.Selectable, false);

【讨论】:

  • 这没有帮助,因为我没有看到焦点并且正在我的代码中创建/绘制复选框。
猜你喜欢
  • 2016-09-05
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
相关资源
最近更新 更多