以下是我的代碼來處理窗體中可用的所有文本框的gotfocus和lostfocus事件。焦點和失去焦點兩個事件重複調用處理獲取和丟失多個文本框的焦點事件它進入無限循環
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
c.GotFocus += new System.EventHandler(this.txtGotFocus);
c.LostFocus += new System.EventHandler(this.txtLostfocus);
}
}
}
private void txtGotFocus(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if (tb != null)
{
tb.BackColor = Color.Silver;
tb.BorderStyle = BorderStyle.FixedSingle;
}
}
private void txtLostFocus(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if (tb != null)
{
tb.BackColor = Color.White;
tb.BorderStyle = BorderStyle.Fixed3D;
}
}
它正常工作與第一個文本框,但是當我去到下一個文本框,按Tab鍵會重複調用的事件和文本框表現得像閃爍。像一些代碼時錯誤消息顯示後:
的回調被做了類型的垃圾收集委託「System.Windows.Forms的System.Windows.Forms.NativeMethods +的WndProc ::調用!」。這可能會導致應用程序崩潰,損壞和數據丟失。在將代理傳遞給非託管代碼時,它們必須由託管應用程序保持活動狀態,直到確保它們永遠不會被調用。
代碼有什麼問題?有沒有解決方法?
感謝您有用的信息。這件事幫助我。 –