首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

讨论有分。100分,讨论textbox多行显示有关问题

2012-03-05 
讨论有分。100分,讨论textbox多行显示问题我测试用的是C#2005,在winodws mobile 6.0下运行测试内容:两个tex

讨论有分。100分,讨论textbox多行显示问题
我测试用的是C#2005,在winodws mobile 6.0下运行
测试内容:两个textbox都设置为多行显示
我在textbox1里写了句textbox2.focus();
理应得到的结果:textbox2得到光标,textbox1失去光标
实际得到的记过:textbox1仍然获取到光标
我测试跟中了下代码
发现,
当执行了textbox2.focus();后
(`1)textbox1.lostfocus
(2)textbox2.gotfocus
(3)textbox2.lostfocus
(4)textbox1.gotfocus

若把textbox1,textbox2设置为当行显示,则不会出现以上问题,为什么?因为时间关系,没有测试一个单行的textbox和一个多行的textbox2会不会有以上问题,
我猜测若单行文本textbox1写textbox2.focus ,textbox2能够获取到焦点
但若在textbox2写textbox1.focus,那么textbox2仍然没有失去焦点。
为什么会这样的呢?
讨论 讨论下,这今天一直在为着烦恼,看过些资料,这个多行显示是有BUG的,


[解决办法]
估计是楼主的逻辑出了问题。
我做了个简单的例子:
在Form上方两个TextBox:textBox1和textBox2,默认textBox1有焦点。
再放一个Button,在Button的Click响应里调用:textBox2.Focus();
运行后都正常,开始textBox1有焦点,点击button后textBox1失去焦点,textBox2得到焦点。
[解决办法]
刚试过
textBox设置多行

C# code
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)        {            textBox2.Focus();        }
[解决办法]
textBox1_KeyPress吧,想想消息的过程就知道是为什么了~~~
[解决办法]
发送一个消息, Shift+TAB键
[解决办法]
经过测试,猜测:
按"上","下"键后,程序执行了焦点改变,又执行了上下滚动条的滚动
(即使不可见,也会执行到,禁用滚动条还没试过. 这个假设也符合楼主所说的 单行 多行 之间的区别..),
这使得焦点重新回到触发控件``

楼主可以使用组合键让用户在输入控件之间切换
[解决办法]
是不是操作引起页面回发,导致页面刷新,把信息给丢了?
[解决办法]
这样的问题好纠结...我在我这里试了一下...KeyDown,按上下的时候,textBox2.Focus()执行不成功,其它的情况是成功的, KeyPress,按方向键左右上下的时候textBox2.Focus()不成功,其它的时候是成功的.

只觉得这不是BUG,而可能逻辑不同...设计人员的内部思想与你的想法不符...所以...
[解决办法]
感觉不复杂,应该不会有bug的
[解决办法]
这种简单的功能,为什么不交给js去实现呢?
[解决办法]
探讨
引用:
经过测试,猜测:
按"上","下"键后,程序执行了焦点改变,又执行了上下滚动条的滚动
(即使不可见,也会执行到,禁用滚动条还没试过. 这个假设也符合楼主所说的 单行 多行 之间的区别..),
这使得焦点重新回到触发控件``

楼主可以使用组合键让用户在输入控件之间切换


组合键,如果用tab就按照tabindex跳.但如果要返回前一个tabindex的控件,组合键是什么呢?
shift+tab嘛?我尝试了,应该不是.

[解决办法]
对12楼看法赞同,不知lz是什么意图,想完成什么功能?
[解决办法]
用vs2008试试吧
[解决办法]
我不搞C#,JAVA还可以一起研究下!

[解决办法]
上面的测试,符合理论啊............
[解决办法]

[解决办法]
好像是有这样的BUG

[解决办法]
做个标记~
[解决办法]
学习!
[解决办法]
探讨
我做的那个测试就是一个窗体有两个textbox,
C# codeprivatevoid textBox1_KeyDown(object sender, KeyEventArgs e)


{
textBox2.Focus();
}
然后在textbox1上写了这句话,就没有其他多余的代码了.所以应该不是逻辑错误


[解决办法]
路过 怎么算 ?

[解决办法]
为什么大家的得分都是0分呢

[解决办法]
逻辑问题
[解决办法]
没有问题呀,我是在vs2008和wm6里测试的。
c#代码为
private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
TextBox2.Focus();
}
没出先所说的BUG
[解决办法]
不要用

ControlXXXX.Focus(); // 并不能让 ActiveControl 变成 ControlXXXX



ActiveControl = ControlXXXX;
ActiveControl.Focus();
[解决办法]
正再学 不懂
[解决办法]
嘿,我也赶上趟了~~~~~
[解决办法]
这个我不懂,分析详细点哈
[解决办法]
探讨
不要用

  ControlXXXX.Focus();  // 并不能让 ActiveControl 变成 ControlXXXX



  ActiveControl = ControlXXXX;
  ActiveControl.Focus();

[解决办法]
讨论半天一点思路都没有~
[解决办法]
看了,可是看不懂哦
[解决办法]
跟着学习
[解决办法]
应该没啥大问题嘛。也来看下如何解决。期待高手
[解决办法]
d
[解决办法]
幫頂,謝謝。
[解决办法]
关注中......
[解决办法]
D
[解决办法]
d
[解决办法]
我做的那个测试就是一个窗体有两个textbox, 
C# code
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
textBox2.Focus();
}

然后在textbox1上写了这句话,就没有其他多余的代码了.所以应该不是逻辑错误
[解决办法]
逻辑问题,好好看看代码吧。
[解决办法]
up
[解决办法]
up too
[解决办法]
I know
[解决办法]
1 是执行顺序的问题,eidtbox的keydown执行直接获取焦点,setfocus()设置焦点,主要是看哪个最后决定了焦点

[解决办法]
抓紧,要不没了
[解决办法]
汗一个。。看了很久。不懂。。初学者啊。。真。。。学习
------解决方案--------------------


为什么不直接用win32 API呢,C#有太多的封装了
[解决办法]
学习

热点排行