通过单击c sharp中的按钮来移除具有焦点的控件

时间:2011-07-29 15:15:15

标签: c# button focus controls

我在面板中有几个控件,我想制作一个按钮,用于删除单击按钮时具有焦点的按钮。我尝试遍历面板中的控件以检查它们中是否有任何焦点,但它总是评估为false。我怀疑这是因为按钮在单击后立即获得焦点。如果这是正在发生的事情,有人可以告诉我如何跟踪面板中的最后一个控件以获得焦点。也许每次焦点变化都会发生一次事件如果这不是正在发生的事情,有人可以告诉我他们认为发生了什么。提前谢谢。

3 个答案:

答案 0 :(得分:2)

你是对的 - 只要按下按钮,所有其他控件都将失去焦点。

您可以通过聆听GotFocus event来记住哪个是最近选择的那个。例如:

public partial class YourForm
{
    private Control _LastFocusedControl;

    public YourForm()
    {
        InitializeComponent();

        var controlsToWatchForFocusChange = ...;   // Some IEnumerable<Control>, e.g. `new[] { txtTextBox1, txtTextBox2 }`
        foreach (var control in controlsToWatchForFocusChange) {
            control.GotFocus += (sender, e) => _LastFocusedControl = (Control)sender;
        }
    }
}

然后,当您按下按钮时,可以通过_LastFocusedControl访问最后一个具有焦点的控件。

答案 1 :(得分:0)

是的,该按钮具有焦点,因为它刚刚被点击。

答案 2 :(得分:0)

您可以使用GotFocusLostFocus事件来跟踪按下按钮之前控制的控件。