我想在点击按钮之前获得哪个文本框已经聚焦。
但当我按下按钮时,焦点将变为此按钮。
那么,我该怎么办?
或者点击按钮之前有一些事件????
非常感谢~~~
答案 0 :(得分:0)
我认为你必须跟踪你想要跟踪的每个控件的焦点变化。
How track when any child control gets or loses the focus in WinForms?
不要只查看选定的答案,有一个赞成的答案会谈到看似有希望的进入和离开事件。
以下是一些适合我的示例代码,您可以根据需要进行调整。
public Form1()
{
InitializeComponent();
this.textBox1.Leave += Form1_Leave;
this.textBox2.Leave += Form1_Leave;
this.textBox3.Leave += Form1_Leave;
}
public object LastSender { get; set; }
private void Form1_Leave( object sender, EventArgs e )
{
LastSender = sender;
}
private void button1_Click( object sender, EventArgs e )
{
var lastTextBox = LastSender as TextBox;
if ( lastTextBox == null ) return;
MessageBox.Show( lastTextBox.Name );
}
很好的部分是你可以将所有事件订阅到同一个方法。因此,当您动态添加新控件时,您可以执行以下操作:
newTextBox.Leave += Form1_Leave;
答案 1 :(得分:0)
我不知道它是否可以在实际情况下使用,但一个棘手的方法是这个
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.button1.MouseEnter += button1_MouseEnter;
}
void button1_MouseEnter(object sender, EventArgs e)
{
focusedTextBox = null;
if (this.textBox1.Focused)
{
focusedTextBox = this.textBox1;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (focusedTextBox != null)
{
MessageBox.Show(focusedTextBox.Name + " has focuse");
}
}
TextBox focusedTextBox;
}
}