求助:C#编写的密码显示与不显示反应慢
最近在写一个C#的电脑软件。其中一行是输入密码的,后面跟着一个“眼睛’”:就是类似手机上填写密码的时候,按下眼睛可以显示密码,再按一下不显示密码。
用的方法是:
用两个图片:一个睁眼的图片,一个闭眼的图片,然后:点击的时候,来回切换。
实际中:就是感觉反应比较慢,手机上的一直点都没事,但是我自己写的:感觉0.8S左右才切换过来。
请教:就是什么原因,另外:求教好方法!!
代码如下:
private void pic_hidden0_Click(object sender, EventArgs e)
{
PictureBox pic = (PictureBox)sender;
int txbTag = int.Parse(pic.Tag.ToString());
foreach (Control ctl in this.gb_encrypt.Controls)
{
if ((ctl as GroupBox) != null)
{
foreach (Control c in ctl.Controls)
{
if ((c as TextBox) != null)
{
TextBox txb = c as TextBox;
if (int.Parse(txb.Tag.ToString()) == txbTag)
{
if (txb.PasswordChar != '*')
{
txb.PasswordChar = '*';
pic.Image = USB_LIN.Properties.Resources.eyeHidden;
}
else
{
txb.PasswordChar = '\0';
pic.Image = USB_LIN.Properties.Resources.eyeShow;
}
}
}
}
}
}
} 本帖最后由 Himem 于 2020-5-30 19:43 编辑
同样位置放两个PictureBox叠在一起,Image分别是眼睛的两张图,
靠改Visible属性来切换显示试试 现在WIN10下装VS哪个版本好用点? 两个foreach 迭代完了才转让控制权给系统, 这时才刷界面. 深圳嘉立创-SMT 发表于 2020-5-30 17:14
两个foreach 迭代完了才转让控制权给系统, 这时才刷界面.
总共有3个需要切换,那怎样写才比较好呢,现在用的foreach,代码相对少点,而且里面控件也不多。 把切换图片这个动作放在另外一个新线程里试试?? SUPER_CRJ 发表于 2020-5-30 17:19
总共有3个需要切换,那怎样写才比较好呢,现在用的foreach,代码相对少点,而且里面控件也不多。 ...
没看懂这两个嵌套迭代是干嘛的.我也不知道怎么改. if(密码可见)
textBoxPSW.PasswordChar = '\0';
else
textBoxPSW.PasswordChar = '*';
好像只要这样就可以了吧 试下先把两句 pic.Image=xxx; 改成某label.text=xx;看会不会也是有延时,如果有的话是你上面判断执行时间长的问题,如果没有则就是更换图片的时延问题。图片更换延时,1是可能界面太复杂刷新的时间太长,2会不会你硬盘有点老,读取图片资源会比较慢?试下先把图片load进缓存 智涅 发表于 2020-5-30 19:30
试下先把两句 pic.Image=xxx; 改成某label.text=xx;看会不会也是有延时,如果有的话是你上面判断执行时间长 ...
最后测试发现是这样的:
图片用的pictureBox,然后用的click事件进行处理的,最后发现是:click事件太慢造成的。 (最后换成button就很快!)
请教:为什么pictureBox的click慢,而button的click比较快? 深圳嘉立创-SMT 发表于 2020-5-30 18:08
没看懂这两个嵌套迭代是干嘛的.我也不知道怎么改.
最后测试发现是这样的:
图片用的pictureBox,然后用的click事件进行处理的,最后发现是:click事件太慢造成的。 (最后换成button就很快!)
请教:为什么pictureBox的click慢,而button的click比较快? 试试MouseDown事件,函数里面判断一下左键 本帖最后由 armstrong 于 2020-5-30 22:34 编辑
你是不是指picturebox快速连按时候反应慢?我发现click事件其实很及时,如果你按的间隔不要太快的话。
按钮是不接受双击的,所以快速连按都很快;而picturebox会把你快速连按识别为双击事件。
你看看: fszhang 发表于 2020-5-30 22:33
试试MouseDown事件,函数里面判断一下左键
MouseDown其实刚刚也试过了,一样的慢。 本帖最后由 foxpro2005 于 2020-5-30 23:47 编辑
SUPER_CRJ 发表于 2020-5-30 22:37
MouseDown其实刚刚也试过了,一样的慢。
你这里应该是用Button类控件(或Label也可以),而不是用Pic,想想Pic的本质是什么
foxpro2005 发表于 2020-5-30 23:40
你这里应该是用Button类控件(或Label也可以),而不是用Pic,想想Pic的本质是什么
...
pic的本质是什么?C#全靠自学,没有系统培训过! armstrong 发表于 2020-5-30 22:33
你是不是指picturebox快速连按时候反应慢?我发现click事件其实很及时,如果你按的间隔不要太快的话。
按钮 ...
说的有道理,我怎么没想到?那么如何屏蔽:pictureBox的双击事件呢? armstrong 发表于 2020-5-30 22:33
你是不是指picturebox快速连按时候反应慢?我发现click事件其实很及时,如果你按的间隔不要太快的话。
按钮 ...
经过测试,确实是因为双击事件造成的!
最后:把click和doubleClick都写进同一个事件,就变得相当快了! 两个图片资源申明为窗体级public变量,提前加载,否则从资源中动态加载有些慢
页:
[1]