2017-09-16 37 views
-1

現在,這是我使用的程序進入/離開:如何在其他地方點擊時離開文本框?

private void tbFullName_Enter(object sender, EventArgs e) 
    { 
     if (tbFullName.Text == "Full name") 
     { 
      tbFullName.Text = ""; 
      tbFullName.ForeColor = Color.Black; 
     } 
    } 

    private void tbFullName_Leave(object sender, EventArgs e) 
    { 
     if (tbFullName.Text == "") 
     { 
      tbFullName.Text = "Full name"; 
      tbFullName.ForeColor = SystemColors.InactiveCaption; 
     } 
    } 

當我集中在另一元件上,只留下。當我點擊背景或其他任何地方時,我希望它離開。我怎樣才能做到這一點?

+0

順便說一句,這只是我使用的水印的一個例子。可能還有其他情況。 – Qedized

+2

該功能內置於Windows。研究提示橫幅 – Plutonix

+0

你應該通過控制焦點來做到這一點,比如當點擊背景時將ContainerControl.ActiveControl屬性設置爲當前表單。 – saeed

回答

1

而不是使用Enter和Leave的TextBox事件,使用GotFocusLostFocus事件,其次要在文本框中使用形式的Click事件留下來調用LostFocus事件。但調用它禁用文字框,並呼籲啓用文本框像下面的代碼後

在形式初始化事件

public Form() 
    { 
     InitializeComponent(); 

     //attach the events here 
     tbFullName.GotFocus += TbFullName_GotFocus; 
     tbFullName.LostFocus += TbFullName_LostFocus; 
    } 

的TextBox這樣的活動

private void TbFullName_LostFocus(object sender, EventArgs e) 
    { 
     if (tbFullName.Text == "") 
     { 
      tbFullName.Text = "Full name"; 
      tbFullName.ForeColor = SystemColors.InactiveCaption; 
     } 
    } 

    private void TbFullName_GotFocus(object sender, EventArgs e) 
    { 
     if (tbFullName.Text == "Full name") 
     { 
      tbFullName.Text = ""; 
      tbFullName.ForeColor = Color.Black; 
     } 
    } 

最後,窗體的Click事件爲

private void Form_Click(object sender, EventArgs e) 
    { 
     tbFullName.Enabled = false;  //disable the textbox 
     TbFullName_LostFocus(sender, e); //call lost focus event 
     tbFullName.Enabled = true;  //enable the textbox 
    } 

此替代方法可能對您有所幫助。

+0

它真的幫了我。感謝您花時間! :) – Qedized

+0

您可以接受爲答案來關閉此問題 –

0

,你也可以使用這個

private void Form1_Click(object sender, EventArgs e) 
    { 
     //your code here 
    } 
+0

僅限代碼答案是因爲他們不解釋他們如何解決問題。請更新你的答案,以解釋這個問題已經有了什麼改進。請複習[我如何寫出一個好答案](https://stackoverflow.com/help/how-to-answer)。 – FluffyKitten

相關問題