0 0

.net平台winform中的TextBox没有GotFocus事件10

。net平台winform中的TextBox没有GotFocus事件,如果用Enter事件代替,单击选中文本框中的内容就不行呀!当我也写了个GotFocus事件,但是触发不了,看来.NET做软件还是有BUG
private void txtcCusName_Enter(object sender, EventArgs e)
{
   txtcCusName.Select(0, txtcCusName.Text.Length);
}
.
问题补充
private void txtcCusName_Enter(object sender, EventArgs e)
{
  txtcCusName.BeginInvoke(new MethodInvoker(txtcCusName.SelectAll));
}
问题补充
public Form1()
{
    InitializeComponent();

    textBox2.Text = "Auto Select Text Demo";
    textBox2.Tag = false;
    textBox2.GotFocus += new EventHandler(textBox2_GotFocus);
    textBox2.MouseUp += new MouseEventHandler(textBox2_MouseUp);
}

void textBox2_MouseUp(object sender, MouseEventArgs e)
{
    //如果鼠标左键操作并且标记存在,则执行全选
    if (e.Button == MouseButtons.Left && (bool)textBox2.Tag == true)
    {
        textBox2.SelectAll();
    }

    //取消全选标记
    textBox2.Tag = false;
}

void textBox2_GotFocus(object sender, EventArgs e)
{
    textBox2.Tag = true;    //设置标记
    textBox2.SelectAll();   //注意1
}

问题补充
ray_linn 写道
我一直懒得理这个帖子。。。。因为觉得太笨的人抱怨总比较多。


直接在click事件里响应就完成了...这样无论是按tab或者click textbox就能选中文字。。。


我问题不是解决了吗,你是不是瞎了眼了?用click事件,太搞笑了吧,难道让他每次单击选中文字。如果设初始值我也不是贴出代码了嘛,要很多行代码才行,我用线程方式一行就可以搞定了,你有本事用一行换一种方法试?
2009年5月04日 09:51

5个答案 按时间排序 按投票排序

0 0

我一直懒得理这个帖子。。。。因为觉得太笨的人抱怨总比较多。


直接在click事件里响应就完成了...这样无论是按tab或者click textbox就能选中文字。。。

2009年5月04日 09:51
0 0

既然lz都知道.net有bug,那该找微软啊。找je有啥用?如果je能解决,那就不叫bug了。

2009年5月04日 09:51
0 0

试了一下,自己添加Gotfocus的回调函数,跟Enter的表现是一致的。
鼠标的确需要单独处理。

2009年5月04日 09:51
0 0

没看懂你们在说什么?什么版本

textbox怎么没有gotfocus事件呢?gotfocus从control开始就有了啊

2009年5月04日 09:51
0 0

dotnet666 写道
当我也写了个GotFocus事件,但是触发不了,

TextBox上本身没有叫GotFocus的事件。大大敢情是这样写GotFocus的?
public class MyTextBox : TextBox
{
    public event EventHandler GotFocus;
}

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent(); 

        textBox2.Text = "Auto Select Text Demo"; 
        textBox2.Tag = false; 
        textBox2.GotFocus += new EventHandler(textBox2_GotFocus); 
        textBox2.MouseUp += new MouseEventHandler(textBox2_MouseUp); 
    }
    
    void textBox2_MouseUp(object sender, MouseEventArgs e) 
    { 
        //如果鼠标左键操作并且标记存在,则执行全选 
        if (e.Button == MouseButtons.Left && (bool)textBox2.Tag == true) 
        {
            textBox2.SelectAll(); 
        } 
    
        //取消全选标记 
        textBox2.Tag = false; 
    }
    
    void textBox2_GotFocus(object sender, EventArgs e) 
    { 
        textBox2.Tag = true;    //设置标记 
        textBox2.SelectAll();   //注意1 
    }
}

要真是这么写的,MyTextBox里的GotFocus有了handler,却没人触发,自然是什么也没有。
dotnet666 写道
看来.NET做软件还是有BUG

……

直接使用TextBox的Enter事件的话,鼠标单击TextBox至少会按顺序触发这几个事件:Enter->MouseDown->Click->MouseUp。Click的默认行为是设置光标位置,所以即使在Enter的handler里调用了SelectAll(),也会在Click时被冲掉。临时解决一下,就在Click里也判断一下是否要SelectAll然后视情况调用就是。

2009年5月04日 09:51

相关推荐

    TextBox获取输入焦点时自动全选的实现方法

     肯定不少朋友一看就会觉得再容易不过了:给TextBox添加GotFocus事件,然后在事件中调用TextBox.SelectAll()不就完事了吗?巢皮一开始也理所当然得这么认为,但要是你试试这么做,你会发现的当你用点击鼠标左键让...

    Winform界面设计之——TextBox水印提示

    总结来说,实现Winform中的TextBox水印提示功能,可以通过自定义控件或使用第三方库来完成,主要涉及控件的重绘、焦点事件以及属性的使用。通过这些技术,我们可以创建出更加友好和直观的用户界面,提高应用程序的...

    C#控件中失去焦点Focus事件与获得焦点Focus事件

    本篇文章将详细探讨C#中的"LostFocus"和"GotFocus"事件,以及如何在TextBox控件中有效地使用它们。 "LostFocus"事件是在控件失去焦点时触发的事件。当用户点击或选择其他任何控件,或者通过键盘导航离开当前控件时...

    水印_textbox水印_winform水印_水印_winform_

    在Winform中,由于没有内置的水印属性,我们需要自定义一个TextBox控件,这可以通过继承TextBox类并重写其部分方法来完成。以下是一个简单的步骤概述: 1. **创建自定义控件**: 创建一个新的类,让它继承自System....

    C#TEXTBOX的扩展

    这可以通过修改TextBox的BackColor属性来实现,在GotFocus和LostFocus事件中设置相应的颜色。 最后,提示输入数据的形式,这通常涉及到TextBox的Watermark功能。水印是显示在TextBox内部的一种文本提示,当TextBox...

    winfrom重写textbox控件,添加水印

    在Windows Forms(WinForms)开发中,我们经常需要在文本框(TextBox)中实现水印效果,即在文本框未输入任何文字时显示一段提示性的文字,一旦用户开始输入,水印文字就会自动消失。本教程将详细介绍如何通过重写...

    WindowsForm实现TextBox占位符Placeholder提示功能

    然而,这种方法的一个小问题是,TextBox的`GotFocus`和`LostFocus`事件默认在Visual Studio的属性面板中不可见。因此,我们需要手动添加这些事件的处理程序,以便在TextBox获得或失去焦点时,控制占位符的显示与隐藏...

    C#ComBox水印功能

    为此,我们需要监听TextBox的GotFocus和LostFocus事件。 ```csharp public WatermarkComboBox() { InitializeComponent(); TextBox txt = (TextBox)GetChildAtPoint(new Point(0, 0)); txt.GotFocus += TextBox_...

    C#文本框输入提示功能

    2. **处理焦点事件**:在自定义的InfoTextBox类中,你需要监听文本框的`GotFocus`和`LostFocus`事件。当文本框失去焦点且内容为空时,显示提示文本;反之,当文本框获得焦点时,如果之前显示了提示文本,则将其清除...

    WinForm 自动完成控件实例代码简析

    在Windows Forms(WinForm)开发中,虽然TextBox控件提供了基本的自动完成功能,但相比Web应用中的JavaScript插件,其功能相对有限。不过,通过自定义控件和编程,我们可以实现更强大的自动完成功能,比如支持中文...

Global site tag (gtag.js) - Google Analytics