日期:2014-05-18  浏览次数:21021 次

winform下文本框获取焦点时全选问题
我用下面的事件怎么没反应呢??
private void textBox1_Enter(object sender, EventArgs e)
{
  textBox1.SelectionStart = 0;
  textBox1.SelectionLength = textBox1.Text.Length;
}
各位帮帮忙

------解决方案--------------------
private void textBox1_Enter(object sender, EventArgs e)
{
this.textBox1.HideSelection = false; 
textBox1.SelectionStart = 0;
textBox1.SelectionLength = textBox1.Text.Length;

}
------解决方案--------------------
textBox1.SelectAll();
------解决方案--------------------
貌似不对啊。我刚试过。
------解决方案--------------------
this.textbox1.SelectAll();
------解决方案--------------------
用Tab按键切换焦点默认就是自动选中的
而鼠标点击就不会,因为自动选中后鼠标按下又会改变选中的位置
7楼说的方法KeyUp中处理是可行的,放到KeyDown效果会更好
这里有个问题,如果用户想通过鼠标点击改变选中的位置就无效了,因为每次点击都会切换焦点
所以得有个标志判断一下,是否是焦点切换的第一次点击
如果点击的时间和焦点的时间相差50毫秒以内则认为是第一次点击
参考如下代码:
C# code
long mouseEnterTick = 0;
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
    if (Environment.TickCount - mouseEnterTick < 50)
        ((TextBox)sender).SelectAll();
}

private void textBox1_Enter(object sender, EventArgs e)
{
    mouseEnterTick = Environment.TickCount;
    ((TextBox)sender).SelectAll();
}

------解决方案--------------------
有些笔误---因为每次点击都会全选
下面的((TextBox)sender).SelectAll();是测试用的,可以删除掉

C# code
private void textBox1_Enter(object sender, EventArgs e)
{
    mouseEnterTick = Environment.TickCount;
}

------解决方案--------------------
加了 this.textBox1.HideSelection = false;
后我这边是可以的啊
------解决方案--------------------
to ETstudio,
HideSelection属性表示在失去焦点的时候是否隐藏选中的蓝框
这个属性控制的是显示状态,并不会影响全选
楼主的问题是处理“获得焦点”的情况,不是“失去焦点”的情况,是处理“选中”而不是处理“显示”。
呵呵,楼主貌似失踪了...