[英]C# add buttons to flow control without stealing focus
在我的應用程序中,我動態創建按鈕並將其添加到流程控件中,然后將其清除。 我將其放在計時器上,每隔X秒刷新一次,然后清除並添加按鈕。 這些都是在主窗體上完成的。
問題是,當我啟動一個子窗體時,每次將控件添加到流控件時,主窗體都會搶占焦點。
這是我擁有的代碼,該代碼可以動態清除並在主窗體上添加控件。
我在添加控件之前將其稱為
flw_users.Controls.Clear();
這就是我所謂的將按鈕動態創建/添加到流控件的方法。
private void DisplayNewMobileUser(string MobileUserName)
{
// Set Button properties
Button button = new Button();
button.Text = MobileUserName;
button.Size = new System.Drawing.Size(171, 28);
button.Name = MobileUserName;
button.BackColor = System.Drawing.Color.White;
button.FlatAppearance.BorderColor = System.Drawing.Color.White;
button.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold);
button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
button.ForeColor = System.Drawing.Color.Black;
button.Margin = new System.Windows.Forms.Padding(0, 1, 0, 1);
button.TextAlign = System.Drawing.ContentAlignment.TopLeft;
button.Click += new EventHandler(MobileUserName_OnClick);
flw_users.Controls.Add(button);
}
有沒有一種方法可以將按鈕添加到流控件中,而不會總是使焦點移開?
多虧了LarsTech,我研究了如何正確處理添加到flw_users的每個控件。 通過更改OnClick事件將焦點更改為標簽,可以解決主要問題,而這又不會導致每次清除並重新添加控件時,主表單都獲得最高的排名。 因此,每當我單擊一個按鈕時,在出現新表單時該按鈕仍然具有焦點。
感謝大家 !
這是我用來正確清除控件的代碼
private void ClearUsers()
{
List<Control> ctrls = new List<Control>();
foreach (Control c in flw_users.Controls)
{
ctrls.Add(c);
}
flw_users.Controls.Clear();
foreach (Control c in ctrls)
{
c.Dispose();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.