如何正确初始化ComboBox?
How to make correct initialization of ComboBox?
我需要在启动程序后显示下拉组合框。
我只需要下拉样式,而不是简单样式。
这是我程序的简单片段:
private void Form1_Shown(object sender, EventArgs e)
{
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
}
但是直到我在任何地方点击表格,我才发现手表标志是光标。
我猜我的表单还没有完全激活状态,正在等待一些东西。
当我通过 LBM 单击表单(或组合框或任何控件)时,它完全激活并且一切正常。
当然组合框是下拉的,所以我需要点击组合框两次。
请告诉我什么是没有“Cursor = Cursors.Default;”
的这种样式组合框的正确初始化
您只需等到光标成为默认值即可:
while (Cursor.Current != Cursors.Default)
{
Application.DoEvents();
}
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
Application.DoEvents 只是处理来自 window 队列的消息,因此您可以处理消息,直到您获得默认游标。在那一刻,你可以毫无问题地放下你的控制。
如果您愿意,可以为表单创建一个扩展方法:
public static class FormExtends
{
public static void WaitToDefaultCursor(this Form form)
{
while (Cursor.Current != Cursors.Default)
{
Application.DoEvents();
}
}
}
并使用它:
this.WaitToDefaultCursor();
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
注意:我使用 Cursor.Default 但不是为了更改光标。表单正在处理消息,很难 select 放下控件的好时机。
我需要在启动程序后显示下拉组合框。 我只需要下拉样式,而不是简单样式。
这是我程序的简单片段:
private void Form1_Shown(object sender, EventArgs e)
{
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
}
但是直到我在任何地方点击表格,我才发现手表标志是光标。 我猜我的表单还没有完全激活状态,正在等待一些东西。
当我通过 LBM 单击表单(或组合框或任何控件)时,它完全激活并且一切正常。
当然组合框是下拉的,所以我需要点击组合框两次。 请告诉我什么是没有“Cursor = Cursors.Default;”
的这种样式组合框的正确初始化您只需等到光标成为默认值即可:
while (Cursor.Current != Cursors.Default)
{
Application.DoEvents();
}
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
Application.DoEvents 只是处理来自 window 队列的消息,因此您可以处理消息,直到您获得默认游标。在那一刻,你可以毫无问题地放下你的控制。
如果您愿意,可以为表单创建一个扩展方法:
public static class FormExtends
{
public static void WaitToDefaultCursor(this Form form)
{
while (Cursor.Current != Cursors.Default)
{
Application.DoEvents();
}
}
}
并使用它:
this.WaitToDefaultCursor();
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
注意:我使用 Cursor.Default 但不是为了更改光标。表单正在处理消息,很难 select 放下控件的好时机。