我需要从几个TextBoxes中删除焦点。我尝试使用:
textBox1.Focused = false;
其ReadOnly
属性值为true
。
然后,我尝试将焦点设置在窗体上,以便将其从所有TextBoxes中删除,但这也行不通:
this.Focus();
false
选择文本框后,函数返回。
那么,如何从TextBox中删除焦点?
我需要从几个TextBoxes中删除焦点。我尝试使用:
textBox1.Focused = false;
其ReadOnly
属性值为true
。
然后,我尝试将焦点设置在窗体上,以便将其从所有TextBoxes中删除,但这也行不通:
this.Focus();
false
选择文本框后,函数返回。
那么,如何从TextBox中删除焦点?
Answers:
您需要其他一些可聚焦的控件来将焦点移至。
请注意,您可以将焦点设置为标签。您可能需要考虑将[Tab]键放在下一步的位置。
另请注意,您不能将其设置为“表单”。诸如Form和Panel之类的容器控件会将Focus传递给其第一个子控件。您可能希望该文本框远离它。
专注于标签对我没有用,做类似的事情label1.Focus()
吗?加载表单时,文本框仍然具有焦点,但是尝试Velociraptors的
回答对我有用,将表单的Active控件设置为标签,如下所示:
private void Form1_Load(object sender, EventArgs e)
{
this.ActiveControl = label1;
}
this.ActiveControl = panelOnMyForm;
您可以添加以下代码:
this.ActiveControl = null; //this = form
尝试禁用和启用文本框。
textBox1.Enabled = false;
将禁用您的文本框。并将其设置为true
将重新启用它。
您还可以将forms activecontrol
属性设置为null
like
ActiveControl = null;
试试这个:
首先设置选项卡顺序。
然后,在表单加载事件中,我们可以通过编程将Tab键按下发送给应用程序。因此,该应用程序将以制表符顺序将焦点放在第一控制上。
在形式加载甚至写这行。
SendKeys.Send("{TAB}");
这确实为我工作。
看来我不必将重点放在其他任何元素上。在Windows Phone 7应用程序上,我一直在使用Focus方法来取消设置文本框的Focus。
给出以下命令会将焦点设置为空:
void SearchBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
Focus();
}
}
http://msdn.microsoft.com/zh-CN/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);
}
}
//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();
});
}
}
}
在持有TextBox的Form或UserControl的构造函数中编写
SetStyle(ControlStyles.Selectable, false);
在InitializeComponent()之后;资料来源:https : //stackoverflow.com/a/4811938/5750078
例:
public partial class Main : UserControl
{
public Main()
{
InitializeComponent();
SetStyle(ControlStyles.Selectable, false);
}