【问题标题】:C# program questionC#程序问题
【发布时间】:2010-09-20 08:22:29
【问题描述】:

private void delete_Click(object sender, EventArgs e) { 转换文本.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?
}

该程序有两个按钮(复制和删除)和一个文本框。如果我单击“复制”按钮,它会毫无问题地从 convertText.Text 复制文本。 “删除”按钮也可以很好地清除文本框。

但如果文本框中没有任何内容,“复制”按钮仍会尝试复制它,这会导致意外行为。

那么,我应该在“else”语句中添加什么代码...?我想要的是,如果文本框中没有任何内容,则不会使用剪贴板操作。该怎么做?

提前致谢!

【问题讨论】:

    标签: c#


    【解决方案1】:

    不要添加 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】:

    您的错误源于您缺少一些括号:

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

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

    【讨论】:

      【解决方案3】:

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

      private void copy_Click(object sender, EventArgs e)
      {
         if (convertedText.Text.Equals(""))
           return; 
      
          Clipboard.SetText(convertedText.Text);
          convertedText.Text = Clipboard.GetText();          
      }
      

      【讨论】:

      • convertedText.Text.Equals("") 不好。更好的是String.IsNullOeEmpty(convertedText.Text)
      【解决方案4】:

      也许你缺少括号 {}

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

      【讨论】:

      • 正确的建议,但不是例外的原因
      【解决方案5】:

      试试看

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

      【讨论】:

        猜你喜欢
        • 2011-08-31
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 2016-07-03
        • 2014-08-06
        • 2017-09-24
        • 1970-01-01
        相关资源
        最近更新 更多