已判断对象非空,但还是出现异常ArgumentNullException

Snartssy 2014-09-16 12:13:54
我的C# Form程序需要复制文本框RichTextBox中的内容,我写了下面这段程序:
private void btn_copyall_Click(object sender, EventArgs e)
{
String strcpy=rchTxt_result.Text.ToString();
if (strcpy == null)
{
MessageBox.Show("文本框没有内容,无法复制!");
return;
}
else if(strcpy!=null)
{
Clipboard.SetText(strcpy);
MessageBox.Show("复制成功!");
}
}

结果,当我在RichTextBox为空时点击按钮,还是报异常

当RichTextBox中有内容时则正常,而且能成功复制。
我不能理解,如果strcpy为空,应该不会执行到语句 "Clipboard.SetText(strcpy);",如果执行到语句 "Clipboard.SetText(strcpy);",就说明strcpy不为空。难道在strcpy为空的前提下还会执行(或者检查)语句 "Clipboard.SetText(strcpy);"?怎么会出现这种情况?
应该怎么解决啊?求大神帮助!
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny906 2014-09-16
  • 打赏
  • 举报
回复
断点看看strcpy到底是什么值
凤凰涅檠 2014-09-16
  • 打赏
  • 举报
回复
Clipboard 未实例化不能调用SetText
Satroki 2014-09-16
  • 打赏
  • 举报
回复
引用 1 楼 xyl2902 的回复:
ToString()多此一举,Text默认为空字符串不为null,SetText不接受null和空字符串,都会报错
String strcpy = richTextBox1.Text;
            if (String.IsNullOrEmpty(strcpy))
            {
                MessageBox.Show("文本框没有内容,无法复制!");
                return;
            }
            else
            {
                Clipboard.SetText(strcpy);
                MessageBox.Show("复制成功!");
            }
Satroki 2014-09-16
  • 打赏
  • 举报
回复
ToString()多此一举,Text默认为空字符串不为null,SetText不接受null和空字符串,都会报错
devilcom 2014-09-16
  • 打赏
  • 举报
回复
IsNullOrEmpty 受教了
Snartssy 2014-09-16
  • 打赏
  • 举报
回复
引用 3 楼 ch_weni 的回复:
Clipboard 未实例化不能调用SetText
但是如果不为空的话,还是能成功复制的

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧