回答:
フォーカスを移動するには、他のフォーカス可能なコントロールが必要です。
フォーカスをラベルに設定できることに注意してください。次に[Tab]キーでどこに移動するかを検討することをお勧めします。
また、フォームに設定することはできません。フォームやパネルなどのコンテナコントロールは、最初の子コントロールにフォーカスを渡します。これは、移動したいTextBoxである可能性があります。
レーベルに焦点を当てることは私にはうまくいきませんでしたlabel1.Focus()
。フォームをロードするとき、テキストボックスにはまだフォーカスがありますが、Velociraptorsの
回答を試すと、フォームのアクティブコントロールを次のようにラベルに設定しました。
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;
この投稿は私にこれをするように導きました:
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);
}
}
//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);
}