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