我需要從幾個文本框中刪除焦點。我試着使用:如何從WinForms中的文本框中移除焦點?
textBox1.Focused = false;
其ReadOnly
屬性值是true
。
我又試圖將焦點設置在窗體上,以便從所有的文本框將其刪除,但是這也不能工作:
this.Focus();
當選擇一個文本框的函數返回false
。
那麼,如何從TextBox中刪除焦點?
我需要從幾個文本框中刪除焦點。我試着使用:如何從WinForms中的文本框中移除焦點?
textBox1.Focused = false;
其ReadOnly
屬性值是true
。
我又試圖將焦點設置在窗體上,以便從所有的文本框將其刪除,但是這也不能工作:
this.Focus();
當選擇一個文本框的函數返回false
。
那麼,如何從TextBox中刪除焦點?
您需要一些其他可調焦控件來將焦點移至。
請注意,您可以將焦點設置爲標籤。你可能想要考慮你想要[Tab]鍵在哪裏接下來。
另請注意,您無法將其設置爲表單。像Form和Panel這樣的容器控件將Focus傳遞給它們的第一個子控件。這可能是你想讓它離開的文本框。
Focus
設置輸入焦點,因此將它設置爲表單不會工作,因爲表單不接受輸入。嘗試將窗體的ActiveControl
屬性設置爲不同的控件。您也可以使用Select
來選擇特定控件或SelectNextControl
以按Tab鍵順序選擇下一個控件。
在這裏試了一下,'Select()'爲我工作。 – 2014-10-02 20:45:41
@Derek W你是男人 – 2016-04-19 22:00:01
我發現了一個很好的選擇!它最適合我,不需要把重點放在別的東西上。
試一下:
private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = true;
}
聚焦在標籤上,我沒有工作,做這樣的事情label1.Focus()
吧? 文本框中仍然加載表單時,但試圖Velociraptors 答案集中,工作對我來說,窗體的主動控制設定的標籤是這樣的:
private void Form1_Load(object sender, EventArgs e)
{
this.ActiveControl = label1;
}
我希望我能給你百萬箭頭了。我試過別人的建議,這是唯一有效的。 出於某種原因,文本框始終偷走了所有東西的焦點...... – eladyanai 2013-03-12 14:58:07
這也適用於面板等容器控件。我只是想完全消除焦點,它的工作原理:'this.ActiveControl = panelOnMyForm;' – 2013-04-09 14:32:14
太棒了!感謝爲我工作:) – 2017-06-07 09:12:57
看來,我沒有設置關注任何其他因素。在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
它爲我,但我不知道爲什麼沒有爲你工作:/
試試這個..
先設置Tab順序..
然後在窗體加載事件中,我們可以發送一個標籤按鍵以編程方式按下應用程序。 ,以便應用程序將焦點按Tab鍵順序排列在第1個控件上。
在表單加載中甚至寫入此行。
SendKeys.Send("{TAB}");
這確實對我有用。
偉大的解決方案! – Yuriy 2012-11-29 19:25:16
一個簡單的解決辦法是殺死焦點,剛剛創建自己的類:
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);
}
}
正是我尋找的解決方案。謝謝! – LeftyCoder 2015-12-09 19:19:12
您還可以設置形式activecontrol
屬性null
像
ActiveControl = null;
我希望人們一路向下滾動,並且不要只使用解決方法標記爲答案 – makoshichi 2017-04-10 14:41:03
我在做這個我自定義控件,我做了onFocus()
this.Parent.Focus();
所以如果te Xbox集中 - 它立即集中文本框的父母(窗體,或面板...) 這是不錯的選擇,如果你想在自定義控件上做到這一點。
這一個爲我工作。 – 2016-12-09 15:26:52
nvm:/我使用ActiveControl = null; – 2018-01-29 18:51:24
這篇文章使我做到這一點:
ActiveControl = null;
這讓我捕捉到在頂層的全鍵盤輸入沒有其他控件將堅果。
//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啓動時,第一個TextBox沒有焦點!
您可以添加以下代碼:
this.ActiveControl = null; //this = form
我相信這是最好的答案。如果您閱讀MSDN,許多其他方法(如「Focus」)都列爲控制設計人員的低級別方法。如果你想讓其他所有東西都「沒有被選中」,這似乎是最簡單的方法,因爲它只是一條小線。 – Rostov 2014-07-16 15:42:51
這可能是Microsoft首先添加此屬性的原因的一半。 – Panzercrisis 2016-10-20 19:19:30
您可以通過兩種方法做到這一點
拖動兩個文本框
tabIndex值到TextBox2中的0
如果你想要的是文本框中有沒有藍色選擇遍佈其內容的光學效果,只要選擇任何文字:
textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();
在此之後,隨着.Text += "..."
添加內容時,沒藍的選拔會所示。
請嘗試設置TabStop
到False
您的視圖控制,這是不重點。
對於例如:
txtEmpID.TabStop = false;
在窗體的構造或用戶控件保持在TextBox寫入
SetStyle(ControlStyles.Selectable, false);
在InitializeComponent後(); 來源:https://stackoverflow.com/a/4811938/5750078
例子:
public partial class Main : UserControl
{
public Main()
{
InitializeComponent();
SetStyle(ControlStyles.Selectable, false);
}
謝謝;我只是試圖專注於一個標籤,現在文本框變得毫無意義。由於某種原因,你似乎無法專注於表單。 – 2009-07-16 21:05:35
容器控件(Form,Panel)將把焦點傳遞給他們的第一個子控件。 – 2009-07-16 21:09:02
很棒的建議。這解決了我的問題。我使用KeyPress來對付表單本身,並有幾個按鈕等。問題是,該應用程序正在從讀卡器獲取輸入,因此如果焦點遠離表單本身,則所有地獄都會崩潰。點擊按鈕之後專注於標籤解決了我的問題。非常感謝! – joelc 2013-04-17 05:55:15