2013-07-22 14 views
2

我一直在尋找這個地方,我找不到任何東西,然後我發現這個網站,我希望我可以得到一些幫助。我如何啓用和禁用一個按鈕取決於我是否可以複製?

我有一個名爲rtb1的RichTextBox和一個名爲btn1的Button。

我正在做一個簡單的記事本,我需要知道如何禁用一個按鈕,取決於我是否可以複製我的richTextBox1。我想知道的是,如何在啓用我的按鈕時可以複製,但在無法複製時將其禁用?

謝謝。

+0

您能否解釋在哪種情況下您無法複製並需要禁用按鈕 – Reda

+0

@ user2266486如果您沒有任何可複製的內容,因爲沒有選擇任何內容。有些程序選擇在這種情況下清除剪貼板,其他程序甚至在沒有任何選擇的情況下找到要複製的內容,有些程序(顯然是這一個)只是在沒有選擇任何內容的情況下不會讓您複製。 – Servy

回答

2

我想我可以幫你,我是在一個先進的記事本工作,我不得不這樣做只是這

在您的撤消按鈕在此代碼:

private void btn1_Click(object sender, EventArgs e) 
    { 
     rtb1.Copy(); 
    } 

,然後把這個代碼在你rtb1.TextChanged事件:

if (rtb1.CanUndo == true) 
    { 
     btn1.Enabled = true; 
    } 
    else if (rtb1.CanUndo != true) 
    { 
     btn1.Enabled = false; 
    } 

,如果你可以撤消的方式,啓用了撤消按鈕,但如果你不能,禁用它。

希望這有助於!

+1

謝謝,正是我需要的! –

+3

您的整個第二段代碼可以寫成'btn1.Enabled = rtb1.CanUndo'。沒有理由像這樣寫出來。 – Servy

+1

這段代碼適用於我,它幫助傑克·納爾遜,所以我沒有理由只是因爲你不喜歡而改變我的整個代碼。你發佈的答案我嘗試過,並沒有奏效。 – Dozer789

5

您應該可以訂閱RichTextBox.SelectionChanged事件。如果SelectionLength大於零,啓用您的按鈕。

這可以如下所示(InitializeComponent後添加在構造函數,或在窗體的負載等):

rtb1.SelectionChanged += (sender, args) => 
{ 
    btn1.Enabled = rtb1.SelectionLength > 0; 
}; 
+0

你是什麼意思「訂閱」?我對編程相當陌生 –

+0

@JackNelson'SelectionChanged'是一個* event *(就像'Button.Click')。請參閱:http://msdn.microsoft.com/en-us/library/awbftdfh.aspx如果您要使用UI元素,這一點非常重要。 –

-1

可以使用SelectionChanged事件來更新文本框,並使用SelectionLength屬性知道它是否應該啓用:

rtb1.SelectionChanged += (_, args) => 
{ 
    btn1.Enabled = rtb1.SelectionLength > 0; 
}; 
+1

我試過了,我得到6個錯誤。 –

+0

@JackNelson嗯,它對我來說編譯得很好,所以你需要更具體一些。 – Servy

+1

它也不適合我。 – Dozer789

相關問題