none
ComboBox で DroppedDown=True にするとマウスカーソルが消える RRS feed

  • 質問

  • C# で開発しているのですが、ComboBoxでキー入力が発生した場合に、自動的にドロップダウンされるようにしたく、以下のように記述したのですが、ドロップダウンが表示さえると、フォーム上からマウスカーソルが消えてしまいます。

    private void comboBox1_TextChanged(object sender, EventArgs e)
    {
        if (!comboBox1.DroppedDown)
        {
            comboBox1.DroppedDown = true;
        }
    }

    このような現象に出会われた方はいらっしゃないでしょうか? 色々と探してみたのですが見つかりません。。

    ちなみに、、

    http://www.codeproject.com/cs/combobox/MultiColComboSugtionBox.asp

    ここのサイトにあるものを2005で動かしたかったのですが、これを動かすと、マウスカーソルが消えてしまい、なぜかと調べていたら、上記コードだけで消えてしまうことがわかりました。

    よろしくお願い致します。

    2007年3月3日 22:54

回答

  • 自己解決ですが、TextChanged イベントではなく、KeyDownイベントで DroppedDown = true にすると、カーソルが消えずに済みました。

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

    2007年3月5日 2:36

すべての返信

  • Yu-ta さん、こんにちは
    ダッチです。

    [コントロール パネル] - [マウス] - [ポインタ オプション]タブ - [文字の入力中にポインタを非表示にする] が有効になっていませんか。
    この場合、テキストボックスやコンボボックスなどの文字入力をしている場合にポインタが非表示になります。

    このコードを実行する直前に System.Windows.Forms.Cursor.Current の値を確認してみてください。 null になっていると思います。
    comboBox1.DroppedDown = true;

    回避策としては、[文字の入力中にポインタを非表示にする] を無効にするか、
    comboBox1.DroppedDown = true;
    を実行する前に System.Windows.Forms.Cursor.Current に任意のカーソルを設定してください。

    それと環境は .NET Framework 1.1 でしょうか。
    もし、.NET Framework 2.0 なのでしたら標準でオートコンプリート機能がサポートされています。

    2007年3月4日 1:40
  • 回答ありがとうございました。

    確かに、[文字の入力中にポインタを非表示にする]が有効になっていたので、無効にしたのですが、これを無効にしても、表示されませんでした。

    環境は、.NET Framework 2.0 です。 オートコンプリート機能はあるのですが、オートコンプリートでドロップダウンするボックスの設定方法(例えば、横幅や縦幅のサイズ指定)などがわからず、どのように制御していいかがわからなかったので、自分で作ろうかと考えていました。

    よろしくお願い致します。

    2007年3月5日 1:14
  • 自己解決ですが、TextChanged イベントではなく、KeyDownイベントで DroppedDown = true にすると、カーソルが消えずに済みました。

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

    2007年3月5日 2:36