Excel AddInアプリケーションでWindowsフォームを使用しています。私はモーダルウィンドウとしてフォームを表示するためにShowDialog()を使用します。私は私のアプリケーションで範囲アドレスを指定する必要があります。そこで、Application.InputBoxを呼び出すボタンを追加しました。 ボタンクリックイベントは、それが正常に動作し、次のコードVSTO Excel AddIn:Excel Inputboxがモーダルウィンドウフォームから呼び出されると、Visual Studioにフォーカスが移動します
private void button1_Click(object sender, EventArgs e)
{
Excel.Range myRng;
Excel.Application app = Globals.ThisAddIn.Application;
myRng = app.InputBox("Prompt", "Title", Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, 8);
label1.Text = myRng.Address.ToString();
this.Focus();
}
が含まれています。しかし、私は入力ボックスがアクティブなときにウィンドウのフォームを非表示にする必要があります。だから私は少しコードを変更しました
private void button1_Click(object sender, EventArgs e)
{
Excel.Range myRng;
Excel.Application app = Globals.ThisAddIn.Application;
this.Visible = false;
myRng = app.InputBox("Prompt", "Title", Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, 8);
label1.Text = myRng.Address.ToString();
this.Visible = true;
this.Focus();
}
残念ながら、これは問題を引き起こします。ボタンをクリックすると、フォーカスがVisual Studioに移動します。私は間違って何をしていますか?どのようにInputBoxが開いた瞬間にExcelアプリケーションにフォーカスを維持するには?
.Focus呼び出しの代わりに.Activate() – Steve
これで問題は解決しません。フォーカスは、myRng = app.InputBox() – Tabibito
行の先に失われてしまいます。明確化:問題は何とかthis.Visible = false; InputBoxをMessageBoxに置き換えても、フォーカスは次の行で失われます。 this.Visible = false;という行をコメントアウトすると問題は消えます。 – Tabibito