- PR -

ComboBox(DropDown)をフォームロード時に設定すると全選択状態になる

1
投稿者投稿内容
ひで
会議室デビュー日: 2005/10/03
投稿数: 2
投稿日時: 2005-10-03 23:41
初めて投稿させて頂きます。
(説明不足など至らない点がございましたらご指摘願います。)

ComboBoxをFormLoad時に項目追加・項目選択を行なっています。
この状態でフォームを起動すると、コンボボックスにフォーカスが
あたっていないにもかかわらずコンボ内の文字が全選択状態になってしまいます。

ComboBoxのプロパティは以下のとおりです。
DropDownStyle:DropDown
Anchor:Top,Bottom,Left,Right

色々試してみた結果、コンボボックスのAnchor(とDock)がデフォルトのままだと上記の現象がおこりませんでした。
ですが、実際はUserControlへComboBoxを乗せたコントロールをフォームへ貼り付けて使用しているので、Anchor又はDockを設定する必要があります。
(サイズの変更を各フォーム単位で行ないたいのでUserControlのサイズに合わせてComboBoxのサイズが変更される必要があります。)

下記サンプルコード
======================================
private void Form1_Load(object sender, System.EventArgs e)
{
// コンボへ項目追加
this.comboBox1.Items.Add("111");
this.comboBox1.Items.Add("222");
this.comboBox1.Items.Add("333");
this.comboBox1.Items.Add("444");

// コンボボックスを選択
this.comboBox1.SelectedIndex = 2;

// テキストボックス(コンボボックス以外)にフォーカスセット
this.ActiveControl = this.textBox1;
this.textBox1.Focus();
}
======================================

長文になりましたが、どなたか回避策をご存知でしたらご教授願います。

[ メッセージ編集済み 編集者: ひで 編集日時 2005-10-04 09:58 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-04 16:20
こんにちは、じゃんぬ です。

Load イベントでなくとも、Anchor を設定した時点で、
フォーカスが一旦逃げているようですね。

もうちょっと調べてみます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひで
会議室デビュー日: 2005/10/03
投稿数: 2
投稿日時: 2005-10-04 20:38
じゃんぬさま、返信有難うございます。
確かにフォームロード以外でもAnchorやDockの設定時に現象がおきますね。

とりあえず、DropDownListでは現象はおきないので
フォームロード時にDropDownListに設定し、コンボボックスのEnterイベントでDropDownに戻す方法で逃げようと思ってます。

他になにか良い案がありましたらご教授願います。
1

スキルアップ/キャリアアップ(JOB@IT)