我需要在啟動程式后顯示下拉組合框。我只需要下拉樣式,而不是簡單樣式。

這是我的程式的簡單片段:
private void Form1_Shown(object sender, EventArgs e)
{
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
}
但是我發現手表標志是游標,直到我在任何地方點擊表格。我猜我的表單還沒有完全激活狀態并等待一些東西。
當我單擊 LBM 的表單(或組合框或任何控制元件)時,它完全激活并且一切正常。
當然組合框是下拉選單,所以我需要點擊組合框兩次。請告訴我,在沒有“Cursor = Cursors.Default;”的情況下,這種樣式組合框的正確初始化是什么?
uj5u.com熱心網友回復:
您可以簡單地等到游標是默認值:
while (Cursor.Current != Cursors.Default)
{
Application.DoEvents();
}
CB1.Items.Add("1");
CB1.DropDownStyle = ComboBoxStyle.DropDown;
CB1.DroppedDown = true;
Application.DoEvents 只處理來自視窗佇列的訊息,因此您可以處理訊息,直到您獲得該游標是默認值。在那一刻,您可以毫無問題地放下控制。
如果您愿意,可以為表單創建一個擴展方法:
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 但不更改游標。表單正在處理訊息,很難選擇一個好的時機來下拉控制元件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/475067.html
上一篇:OAuth2和MFA是什么關系
