2010-09-20 55 views
1

private void delete_Click(object sender,EventArgs e) { convertedText.Text =「」; }C#程序問題

private void copy_Click(object sender, EventArgs e) 
{ 
    if (convertedText.Text != "") 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
    else... what to put here? 
} 

該方案有兩個按鈕(複製和刪除)和一個文本框。如果我點擊「複製」按鈕,它將毫無問題地複製convertedText.Text中的文本。 '刪除'按鈕也清除了文本框的罰款。

但是,如果文本框中沒有任何內容,「複製」按鈕仍會嘗試複製它,這會導致意外的行爲。

那麼,我將什麼代碼添加到'else'語句...?我想要的是,如果文本框沒有任何內容,那麼剪貼板操作將不會被使用。怎麼做?

在此先感謝!

回答

6

不要添加else子句,只有if本身,例如,

private void copy_Click(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(convertedText.Text)) 
    { 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
    } 
} 

此外,是否有任何理由將文本框文本複製到剪貼板,然後使用剪貼板文本更新文本框文本?除非我失去了一些東西,這應該對文本框沒有任何影響,因此代碼可以更簡單:

private void copy_Click(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(convertedText.Text)) 
     Clipboard.SetText(convertedText.Text); 
} 
+2

我會認爲這是因爲他正在測試,看看它是否工作。 – Blam 2010-09-20 09:18:05

2

你的錯誤的事實,你是缺少一些括號有莖:

if (convertedText.Text != "") 
{ 
    Clipboard.SetText(convertedText.Text); 
    convertedText.Text = Clipboard.GetText(); 
} 

只有第一行後的if語句被認爲是什麼被執行依賴於如果在評價部分你省略了括號。

0

如果文本框中沒有一個值時,也可以返回...

private void copy_Click(object sender, EventArgs e) 
{ 
    if (convertedText.Text.Equals("")) 
    return; 

    Clipboard.SetText(convertedText.Text); 
    convertedText.Text = Clipboard.GetText();   
} 
+0

'convertedText.Text.Equals(「」)'是不好的。 'String.IsNullOeEmpty(convertedText.Text)' – abatishchev 2010-09-20 09:17:31

+0

更好嗎這是一個性能相關的問題? – Matt 2010-09-20 09:26:14

0

也許你缺少括號{}

if (convertedText.Text != ""){ 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
} 
    else 
+0

正確的建議,但不是例外的原因 – abatishchev 2010-09-20 09:21:46

-2

嘗試把

try 
{ 
    string foo = "bar" + 42; 
} 
catch 
{ 
    throw; 
}