2010-11-26 5 views
0

入れ子のSplitContainerがいくつかあり、望ましくない動作が発生しています。スプリッタが動くたびに、コントロールがテキストを選択(テキストがハイライト表示)されます。特にコンボボックスが使用されます。.NET BUG? SplitContainer Split moveは、含まれているコントロールのすべてのテキストを選択します。

なぜthiosが起こるのかわかりません。問題は再現するのがかなり簡単です。

  1. フォームを作成するだけです。
  2. 分割容器を入れてください。
  3. いくつかの項目を含むComboBoxを追加します。
  4. ComboBoxの左右を固定します。
  5. コンパイル
  6. 移動は、スプリッタ

あなたはコンボボックスは、そのテキストが強調表示されますことがわかります。

これを防ぐにはどうすればよいですか?または、少なくとも、コンボボックスからハイライトを削除しますか?

ありがとうございました!

答えて

3

これは、Windowsのネイティブコンボボックスコントロールの古くからのバグです。はい、それはWM_SIZEメッセージを取得したときにテキストを選択します。これはDropDownStyle = DropDownに固有です。

これは、可能な回避策は次のとおりです。

using System; 
using System.Windows.Forms; 

class MyComboBox : ComboBox { 
    protected override void OnResize(EventArgs e) { 
     if (!this.Focused && this.DropDownStyle == ComboBoxStyle.DropDown) { 
      this.SelectionLength = 0; 
     } 
     base.OnResize(e); 
    } 
} 
+0

どうもありがとうございました。それは完全に働いた。 – Scudelari

関連する問題