当前位置: 代码迷 >> Windows Mobile >> 讨论有分。100分,讨论textbox多行显示有关问题
  详细解决方案

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

热度:128   发布时间:2016-04-25 07:48:42.0
讨论有分。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)
  相关解决方案