我正在创建一个 Windows 窗体应用程序,我需要一个包含项目的组合框,每个组合框都会打开另一个组合框,用户可以专门选择。
一个例子:我的组合框中有 2 个项目。丹麦语单词 英语单词
当用户选择英文单词时,它会打开另一个组合框,用户可以在其中选择一个英文单词。
如何创建这种组合框?
**编辑:它不必组合框,只需达到相同结果的东西
问题的图像:
试试这段代码:我创建了两个组合框,一个名为 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