簡體   English   中英

C#添加按鈕以進行流控制而不會失去焦點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM