【问题标题】:Comboboxitems containing combobox windows forms包含组合框窗口窗体的 Comboboxitems
【发布时间】:2012-11-28 17:44:40
【问题描述】:

我正在创建一个 Windows 窗体应用程序,我需要一个包含项目的组合框,每个项目都会打开另一个组合框,并且用户可以专门选择。

一个例子: 我的组合框中有 2 个项目。 丹麦语 英语单词

当用户选择英文单词时,它会打开另一个组合框,用户可以在其中选择一个英文单词。

如何创建这种组合框?

**编辑:它不必组合框,只需达到相同结果的东西

问题图片:

【问题讨论】:

  • 必须与组合框一起使用吗?您也可以使用 StripMenus 来实现这一点,它不那么复杂。
  • 在我看来,动态控制创建可能是做到这一点的方法。

标签: c# winforms combobox


【解决方案1】:

试试这个代码: 我创建了两个组合框,一个名为 language_CmbBx,一个名为 words_CmbBx。 我设置words_CmbBx.Visible = false;

 private void language_CmbBx_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Cursor = new Cursor(Cursor.Current.Handle);
            words_CmbBx.Location = new Point(language_CmbBx.Location.X + language_CmbBx.Width, GetLocalMousePos().Y);
            words_CmbBx.Visible = true;

        }

这个方法是获取你的鼠标位置或者你想要的selectedItem的位置:

    public Point GetLocalMousePos()
    {
        Point screenPos = Cursor.Position;
        return this.PointToClient(screenPos);
    }

唯一的问题是 ComboBox 不会保持打开状态,我还没有找到让它保持打开状态的方法。

正如我已经提到的,使用 ComboBoxes 很难实现你想要的,尝试使用 ListBox 代替:

    private void languages_LstBx_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.Cursor = new Cursor(Cursor.Current.Handle);
        words_LstBx.Location = new Point(language_LstBx.Location.X + language_LstBx.Width, GetLocalMousePos().Y);
        words_LstBx.Visible = true;
    }

相同的代码,更好的结果!

你可以在这里下载我的 VS2010 项目:http://www.abouchleih.de/projects/twocomboboxes.zip

【讨论】:

  • 我终于有时间看它了,效果很好。谢谢你:)
猜你喜欢
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多