C#程序问题

时间:2010-09-20 08:22:30

标签: c#

private void delete_Click(object sender,EventArgs e)     {         convertedText.Text =“”;     }

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”语句中添加了哪些代码......?我想要的是,如果文本框中没有任何内容,则不会使用剪贴板操作。怎么做?

提前致谢!

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

您的错误源于您在那里遗漏了一些括号:

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

只有if语句后面的第一行被认为是执行内容的一部分,这取决于在省略括号时对if的求值。

答案 2 :(得分:0)

如果文本框没有值,您也可以返回...

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

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

答案 3 :(得分:0)

可能您缺少括号{}

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

答案 4 :(得分:-2)

尝试放

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