TextBox控件获取焦点并光标正确闪烁
2017-08-17 16:33
253 查看
在使用WinForm开发登录界面时需要实现当鼠标点击账号或密码输入框时默认文字消失同时输入框获取焦点光标正常显示并可以输入文字等内容。在实际开发中使用了label控件和TextBox控件组合实现输入框。实现的逻辑是当鼠标点击覆盖在TextBox控件上的label时TextBox控件获取焦点。实际的效果是必须点击两次才能正确实现期望的效果。经过排查发现是TextBox控件设置了visible属性为false,在label控件的单击事件中先使用Focus方法让TextBox控件获取焦点,然后才设置visible属性为true,但focus时TextBox的visible属性为false,控件不可见并不能获取焦点,所以不能成功。把visible属性在focus之前置为true就可以解决问题。
代码如下。
错误代码:
void lblpassword_Click(object sender, EventArgs e)
{
this.lblpassword.Visible = false;
txtPassword.Focus();
txtPassword.Visible = true;
}
正确代码:
void lblContent_Click(object sender, EventArgs e)
{
this.lblContent.Visible = false;
txtAccount.Visible = true;
txtAccount.Focus();
}
这个问题中控件的属性设置的逻辑正确与否是解决问题的关键。
代码如下。
错误代码:
void lblpassword_Click(object sender, EventArgs e)
{
this.lblpassword.Visible = false;
txtPassword.Focus();
txtPassword.Visible = true;
}
正确代码:
void lblContent_Click(object sender, EventArgs e)
{
this.lblContent.Visible = false;
txtAccount.Visible = true;
txtAccount.Focus();
}
这个问题中控件的属性设置的逻辑正确与否是解决问题的关键。
相关文章推荐
- asp.net控件与JavaScript实现TextBox获取焦点时出现日历
- DatePicker 控件在5.0以上版本 焦点释放问题 手动输入点击确定按钮不能正确获取到日期优化
- 关于在使用easyui的时候,实现光标定位在easyui-combogrid和easyui-textbox输入框内(也就是获取焦点)
- 关于 EditText 自动获取焦点闪烁光标
- 利用反射机制,禁止Edittext弹出软件盘,但光标依然正常显示,控件仍能获得焦点
- C#文本框获取焦点后光标处于文本末尾
- js 获取 asp.net 服务器端控件 Label 与 TextBox RadioButtonList 与 DropDownList 的值
- ListView中含有需要获取焦点的控件时
- Android ListView 子控件onClick正确获取position
- 【Android】如何让一个控件能主动获取到焦点
- EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- js无法获取只读属性服务器端控件TextBox的值
- 文本框获取焦点时,光标出现在文本末尾
- 使用JS来判断页面控件获取焦点
- EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- 通过JS来判断页面控件是否获取焦点
- 通过JS来判断页面控件是否获取焦点
- 创建三个输入文本框,当光标离开文本框的时候如果文本框为空,则将文本框背景色设置为红色,如果不为空则为白色。提示:焦点进入控件的事件是onfocus,焦点离开控件的事件是onblur
- C# WinForm获取当前拥有焦点的控件