wince程序有两个界面,界面A可以点击按钮打开界面B同时隐藏界面A,界面B同样可以点击按钮打开界面A同时隐藏界面B,现在问题出现了,我在界面A的Activated事件里面使用了textbox.Focus()去设置焦点,第一次实例化界面时是可以设置焦点的,第二次从隐藏状态激活界面时,虽然执行Activated事件里面textbox.Focus(),但是界面上并没有获取到焦点(第二次打开界面并没有实例化界面了,只是从隐藏状态重新show()出来)。在winform里面我试过这种方式是可以设置焦点的,不知道为什么在wince程序里面为什么执行了也不能设置焦点
设置焦点需要注意窗体是在SHOW的状态下,同样要可以访问的状态下,设置焦点才有效。
应该是在可访问的状态下的,我是在Activated事件里面执行下面代码的 tbxLocationCode.Text = ""; lblLocationIDValue.Text = ""; tbxCommodityCode.Text = ""; tbxLotNumber.Text = ""; tbxQuantity.ReadOnly = false; tbxQuantity.Text = ""; lblStockQuantity.Text = string.Format("库位已有商品数量:", ""); tbxRemark.Text = ""; tbxCommodityCode.Enabled = false; tbxLotNumber.Enabled = false; tbxQuantity.Enabled = false; tbxLocationCode.Focus(); 前面的代码全部都执行成功了,因为界面上的数据全部清空了,同时也设置了部分textbox不能响应,tbxLocationCode.Focus();也执行了但是焦点还是在之前的按钮上面。过程是这样的:我在这个界面上点击“打开B窗体”这个按钮,再从B窗体回到这个界面时,焦点还在“打开B窗体”这个按钮上而不是我在Activated事件里面执行tbxLocationCode.Focus()的tbxLocationCode这个textbox上。 可以考虑窗体显示出来,延时 100ms 再做焦点设置 窗体上 Init 和 Show 的消息,在其中进行处理,设置一下 Timer,在此 Timer 中进行 SetFocus 操作
|