nathan のソリューションは、Compact Framework またはネイティブの Windows Mobile アプリケーションでも機能します。テキスト ボックス GotFocus でグローバル var を設定し、これをボタン クリック イベントで使用して、フォーカスを最後のアクティブなテキスト ボックスに戻します。
//global var
TextBox currentTB = null;
private void button1_Click(object sender, EventArgs e)
{
inputPanel1.Enabled = !inputPanel1.Enabled;
if(currentTB!=null)
currentTB.Focus();
}
private void textBox1_GotFocus(object sender, EventArgs e)
{
currentTB = (TextBox)sender;
}
よろしく
ヨーゼフ
編集: TextBox のサブクラスを使用したソリューション:
class TextBoxIM: TextBox{
public static TextBox tb;
protected override void OnGotFocus (EventArgs e)
{
tb=this;
base.OnGotFocus (e);
}
}
...
private void btnOK_Click (object sender, System.EventArgs e)
{
string sName="";
foreach(Control c in this.Controls){
if (c.GetType()==typeof(TextBoxIM)){
sName=c.Name;
break; //we only need one instance to get the value
}
}
MessageBox.Show("Last textbox='"+sName+"'");
}
次に、TextBox を配置する代わりに、TextBoxIM を使用します。