在我的应用程序中,我动态创建按钮并将它们添加到稍后清除的流控件中。我有一个计时器刷新每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);
}
有没有办法在流量控制中添加按钮而不会总是窃取焦点?
答案 0 :(得分:-1)
感谢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();
}
}