我需要从几个文本框去掉焦点。 我试着使用:
textBox1.Focused = false;
它的ReadOnly
属性值是true
。
然后,我尝试设置焦点的形式,以便从所有的文本框将其删除,但是这也不能工作:
this.Focus();
和该函数返回false
当选择了文本框。
那么,如何删除从一个TextBox的焦点?
我需要从几个文本框去掉焦点。 我试着使用:
textBox1.Focused = false;
它的ReadOnly
属性值是true
。
然后,我尝试设置焦点的形式,以便从所有的文本框将其删除,但是这也不能工作:
this.Focus();
和该函数返回false
当选择了文本框。
那么,如何删除从一个TextBox的焦点?
你需要一些其他的可聚焦控制,将焦点移到。
请注意,您可以将焦点设置到一个标签。 你可能要考虑你想要的[Tab]键把它旁边。
还要注意的是,你不能将它设置为窗体。 状和Panel容器控件将传递给他们的第一个孩子控制的重点。 这可能是你想要它移动远离文本框。
聚焦在标签上并没有工作对我来说,做这样的事情label1.Focus()
吧? 文本框中仍然加载表单时,但试图集中伶盗龙属的答案,为我工作,窗体的主动控制设定到这样的标签:
private void Form1_Load(object sender, EventArgs e)
{
this.ActiveControl = label1;
}
您可以添加以下代码:
this.ActiveControl = null; //this = form
尝试禁用和启用文本框。
您还可以设置形式activecontrol
属性为null
像
ActiveControl = null;
Focus
设置输入焦点,因此将其设置到窗体不会起作用,因为表单不接受输入。 尝试窗体的设置ActiveControl
属性不同的控制。 你也可以使用Select
来选择特定的控制或SelectNextControl
选择Tab键顺序的下一个控件。
试试这个:
首先建立了Tab键顺序。
然后在窗体加载事件中,我们可以编程方式发送标签按键应用。 因此,该应用程序将给予重点Tab键顺序1号控逆变。
在形式负载甚至在此线。
SendKeys.Send("{TAB}");
这确实为我工作。
这篇文章使我做到这一点:
ActiveControl = null;
这让我捕捉到在顶层的全键盘输入,而不去坚果其他控件。
看来,我没有将焦点设置为任何其他元素。 在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
它为我工作,但我不知道为什么没有为你工作:/
一个简单的解决办法是杀死焦点,刚刚创建自己的类:
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);
}
}
我已经找到了一个很好的选择! 它最适合我,没有设置焦点得也快。
尝试:
private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = true;
}
我做这在我的自定义控件,我这样做的onfocus()
this.Parent.Focus();
所以,如果texbox关注 - 它立即如果你想使这个自定义控制重点文本框的父(形式,或面板...)这是一个不错的选择。
//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();
});
}
}
}
我周围的获得方法是把我所有的WinForm控件。 我使所有标签和非选择的winform控件标签顺序0,那么我的第一控制作为标签顺序2,然后通过递增1每个可选择控制的顺序,因此3,4,5等...
这样,当我的WinForms启动,第一个文本框没有焦点!
您可以通过两种方法做到这一点
拖动两个文本框
tabIndex值到TextBox2中的0
如果你想要的是文本框中有没有蓝色选择遍布其内容的光学效果,只要选择任何文字:
textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();
在此之后,与添加内容时.Text += "..."
,没蓝的选择将显示。
请尝试设置TabStop
以False
为未聚焦您的视图控件。
对于例如:
txtEmpID.TabStop = false;
在窗体的构造函数或用户控件拿着写文本框
SetStyle(ControlStyles.Selectable, false);
后在InitializeComponent(); 来源: https://stackoverflow.com/a/4811938/5750078
例:
public partial class Main : UserControl
{
public Main()
{
InitializeComponent();
SetStyle(ControlStyles.Selectable, false);
}