C#中textbox属性设置问题

yhxxy 2009-04-02 09:32:29
在做程序时遇到的奇怪问题,为文本框赋值时出现的.
MessageBox.Show(JudgeCmd.ResultTxt);
txt3_2.Text = JudgeCmd.ResultTxt;
//MessageBox.Show(JudgeCmd.ResultTxt);
经过测试,JudgeCmd.ResultTxt是有值的,但是如果把MessageBox注释掉以后,文本框就显示不出JudgeCmd.ResultTxt的值
另外,如果把前面的MessageBox注释掉,文本框也可以显示出值,后面的MessageBox也显示出正确的值出来.
好像是只要有一个MessageBox,那文本框就能显示值.

我想知道文本框的哪个属性设置会影响到这种情况?还有就是JudgeCmd.ResultTxt是从别的地方传过来的,绝对是有值的.
...全文
1360 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fysz007 2009-08-14
  • 打赏
  • 举报
回复
有没有textbox 的所有属性 介绍啊 有的我就不会用
yhxxy 2009-04-03
  • 打赏
  • 举报
回复
经过我断点测试,我可以肯定的说JudgeCmd.ResultTxt是有值的.现在我再把目前的情况仔细说一下.
string str;
textBox2.Text = txt3_2.Text;
textBox1.Text = JudgeCmd.ResultTxt;

str = this.txt3_2.Text;
str = str + "\r\naaaaaaaaaaaaaa";
str = str + JudgeCmd.ResultTxt;
// str = str + "bbbbbbbb";
this.txt3_2.Text = str;
// txt3_2.Text ="aaa" ;
我断点测试后各个变量都是有值的,而且textBox1和textBox2也能显示出正确的值,但是把这两组值放到一起后在txt3_2中就显示不出来,后来经过我的不懈尝试,发现并不是没有值,而是它自动把"\r\n后面切掉了一部分
请哪位高人指点一下


yhxxy 2009-04-03
  • 打赏
  • 举报
回复
我现在发现好像是因为我在后面设置光标定位引起的,反正现在又好了.结帖,给分.
alen0707 2009-04-03
  • 打赏
  • 举报
回复
\r\n后的并不是因为截掉了。
如果你的textbox设置的为多行的话,那可能是显示在下一行去了,因为“\r\n”相当与回车换行!
按理讲不会出现那种不显示的情况的...
再仔细检查下吧!
睡神在睡觉 2009-04-03
  • 打赏
  • 举报
回复
如果你的TextBox没有设置成多行输入的话,是不支持\r\n的,或者说从直观上看不出来的,我用winform测试的,没有你说的会截断,如果是截断的话肯定不是因为\r\n,而是存在\0,这是字符串结尾标识符,你可以循环去掉这个字符,之后再拼接赋值.
loong08 2009-04-02
  • 打赏
  • 举报
回复
.net 技术交流群34938110
Myth_NiuNiu 2009-04-02
  • 打赏
  • 举报
回复
你点按钮给文本框赋值,文本框keydown事件又赋值,我看下你的代码应该没问题的,有的只是逻辑上的,你再检查下了
yhxxy 2009-04-02
  • 打赏
  • 举报
回复
如果将文本框内容写入文件后会不会形成现在这种情况?我在另外一个函数中将文本框的内容保存到一个文本文件中了.
Roc_Lee 2009-04-02
  • 打赏
  • 举报
回复
你可以看看page_load 是不是有txt3_2.Text ="";
等的操作
yhxxy 2009-04-02
  • 打赏
  • 举报
回复
可能的原因:
你的JudgeCmd.ResultTxt 在取得值的时候,需要一点时间,并不是立刻取道的,而你的JudgeCmd.ResultTxt 默认的初值为null或空,所以当你把
上边的messagebox注释掉的时候,JudgeCmd.ResultTxt 值还没传进来就给textbox赋值了,所以为空,
可以先sleep 1秒,估计就可以了

我刚才不用传值的方法,就直接赋值,它也不显示,真愁人啊.我再把情况解释一下吧.
开始的时候文本框内容都是正常显示的
这是一个按钮点击事件,点击以后,开始在文本框中进行输入
private void btn3_22_Click(object sender, EventArgs e)
{
txt3_2.Text = "<Quidway>";
this.txt3_2.Focus();
this.txt3_2.Select(9, 0);
}
下面是文本框的事件
private void txt3_2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
JudgeCmd.ResultTxt = "aaa";
string ss = this.txt3_2.Text;
this.txt3_2.Focus();
//this.txt3_2.Text = JudgeCmd.ResultTxt;
txt3_2.Text ="aaa" ;
// MessageBox.Show(JudgeCmd.ResultTxt);
//MessageBox.Show(txt3_2.Text);
}
}
真是不知道为什么,在点击按钮后,文本框就无法再进行正常的赋值操作了.
睡神在睡觉 2009-04-02
  • 打赏
  • 举报
回复
你确认之后的操作没有清空txt3_2.Text 或对txt3_2.Text 再赋值了么?好好检查下,再在赋值完后刷新下,或是断点调试,看有没有值,如果能show出来,肯定是你之后又清空它了
yhxxy 2009-04-02
  • 打赏
  • 举报
回复
名位,我真的是已经测过了,问题是出在这个文本框上,我拿另一个全新的文本框为他赋值时,都可以获得值,但是因为我现在这个文本框之前做了许多的设置,所以在哪里出的问题我也找不到了,才到这里请大家帮忙.
深海之蓝 2009-04-02
  • 打赏
  • 举报
回复
可能的原因:
你的JudgeCmd.ResultTxt 在取得值的时候,需要一点时间,并不是立刻取道的,而你的JudgeCmd.ResultTxt 默认的初值为null或空,所以当你把
上边的messagebox注释掉的时候,JudgeCmd.ResultTxt 值还没传进来就给textbox赋值了,所以为空,
可以先sleep 1秒,估计就可以了
dell0923 2009-04-02
  • 打赏
  • 举报
回复
你说JudgeCmd.ResultTxt绝对有值,你把JudgeCmd.ResultTxt换成"Label"试试?
outou 2009-04-02
  • 打赏
  • 举报
回复
这里有很多http://bingning.net/VB/SOURCE/control/index.html关于文本框架设定的代码,参照一下。
outou 2009-04-02
  • 打赏
  • 举报
回复
这里有很多http://bingning.net/VB/SOURCE/control/index.html关于文本框架设定的代码,参照一下。
liujt09 2009-04-02
  • 打赏
  • 举报
回复
同意楼上的
huyan1986 2009-04-02
  • 打赏
  • 举报
回复
你把他先给给别的控件试试那(Label)
等不到来世 2009-04-02
  • 打赏
  • 举报
回复
ReadOnly?
Myth_NiuNiu 2009-04-02
  • 打赏
  • 举报
回复
应该跟属性无关的,你再检查下程序

110,571

社区成员

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

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

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