如何删除从WinForms的一个TextBox的焦点?(How to remove the focu

2019-06-14 18:59发布

我需要从几个文本框去掉焦点。 我试着使用:

textBox1.Focused = false;

它的ReadOnly属性值是true

然后,我尝试设置焦点的形式,以便从所有的文本框将其删除,但是这也不能工作:

this.Focus();

和该函数返回false当选择了文本框。

那么,如何删除从一个TextBox的焦点?

Answer 1:

你需要一些其他的可聚焦控制,将焦点移到。

请注意,您可以将焦点设置到一个标签。 你可能要考虑你想要的[Tab]键把它旁边。

还要注意的是,你不能将它设置为窗体。 状和Panel容器控件将传递给他们的第一个孩子控制的重点。 这可能是你想要它移动远离文本框。



Answer 2:

聚焦在标签上并没有工作对我来说,做这样的事情label1.Focus()吧? 文本框中仍然加载表单时,但试图集中伶盗龙属的答案,为我工作,窗体的主动控制设定到这样的标签:

private void Form1_Load(object sender, EventArgs e)  
{ 
    this.ActiveControl = label1;       
}


Answer 3:

您可以添加以下代码:

this.ActiveControl = null;  //this = form


Answer 4:

尝试禁用和启用文本框。



Answer 5:

您还可以设置形式activecontrol属性为null

ActiveControl = null;


Answer 6:

Focus设置输入焦点,因此将其设置到窗体不会起作用,因为表单不接受输入。 尝试窗体的设置ActiveControl属性不同的控制。 你也可以使用Select来选择特定的控制或SelectNextControl选择Tab键顺序的下一个控件。



Answer 7:

试试这个:

首先建立了Tab键顺序。

然后在窗体加载事件中,我们可以编程方式发送标签按键应用。 因此,该应用程序将给予重点Tab键顺序1号控逆变。

在形式负载甚至在此线。

SendKeys.Send("{TAB}");

这确实为我工作。



Answer 8:

这篇文章使我做到这一点:

ActiveControl = null;

这让我捕捉到在顶层的全键盘输入,而不去坚果其他控件。



Answer 9:

看来,我没有将焦点设置为任何其他元素。 在Windows Phone 7应用程序,我已经使用Focus方法取消设置文本框的焦点一直是。

给予以下命令将焦点设置到什么:

void SearchBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        Focus();
    }
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

它为我工作,但我不知道为什么没有为你工作:/



Answer 10:

一个简单的解决办法是杀死焦点,刚刚创建自己的类:

public class ViewOnlyTextBox : System.Windows.Forms.TextBox {
    // constants for the message sending
    const int WM_SETFOCUS = 0x0007;
    const int WM_KILLFOCUS = 0x0008;

    protected override void WndProc(ref Message m) {
        if(m.Msg == WM_SETFOCUS) m.Msg = WM_KILLFOCUS;

        base.WndProc (ref m);
    }
}


Answer 11:

我已经找到了一个很好的选择! 它最适合我,没有设置焦点得也快。

尝试:

private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{    
    e.SuppressKeyPress = true;
}


Answer 12:

我做这在我的自定义控件,我这样做的onfocus()

this.Parent.Focus();

所以,如果texbox关注 - 它立即如果你想使这个自定义控制重点文本框的父(形式,或面板...)这是一个不错的选择。



Answer 13:

    //using System;
    //using System.Collections.Generic;
    //using System.Linq;

    private void Form1_Load(object sender, EventArgs e)
    {
        FocusOnOtherControl(Controls.Cast<Control>(), button1);
    }

    private void FocusOnOtherControl<T>(IEnumerable<T> controls, Control focusOnMe) where T : Control
    {
        foreach (var control in controls)
        {
            if (control.GetType().Equals(typeof(TextBox)))
            {
                control.TabStop = false;
                control.LostFocus += new EventHandler((object sender, EventArgs e) =>
                {                     
                    focusOnMe.Focus();
                });
            }
        }
    }


Answer 14:

我周围的获得方法是把我所有的WinForm控件。 我使所有标签和非选择的winform控件标签顺序0,那么我的第一控制作为标签顺序2,然后通过递增1每个可选择控制的顺序,因此3,4,5等...

这样,当我的WinForms启动,第一个文本框没有焦点!



Answer 15:

您可以通过两种方法做到这一点

  • 只是让所需的文本框为假的“接受tab”属性现在,即使你有一个文本字段不会关注
  • 拖动两个文本框

    1. 做一个可见你不想foucus这是TextBox1的
    2. 使第2隐形一个去到文本字段的属性,然后选择

tabIndex值到TextBox2中的0

  1. 并选择您TextBox1的tabindex属性为1,现在也不会集中在TextBox1中


Answer 16:

如果你想要的是文本框中有没有蓝色选择遍布其内容的光学效果,只要选择任何文字:

textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();

在此之后,与添加内容时.Text += "..." ,没蓝的选择将显示。



Answer 17:

请尝试设置TabStopFalse为未聚焦您的视图控件。

对于例如:

txtEmpID.TabStop = false;


Answer 18:

在窗体的构造函数或用户控件拿着写文本框

SetStyle(ControlStyles.Selectable, false);

后在InitializeComponent(); 来源: https://stackoverflow.com/a/4811938/5750078

例:

public partial class Main : UserControl
{

    public Main()
    {
        InitializeComponent();
        SetStyle(ControlStyles.Selectable, false);
    }


文章来源: How to remove the focus from a TextBox in WinForms?