先頭の文字列を入力しても ComboBox コントロールの項目が選択されない

文書翻訳 文書翻訳
文書番号: 814362 - 対象製品
ベータ版情報
この資料では、マイクロソフトのベータ版製品について説明しています。この資料の情報は、この資料の発行時点のものであり、将来予告なしに変更することがあります。

このベータ版製品は、マイクロソフトの正規サポート対象外となっています。ベータ版のサポートについては、ベータ版製品に含まれるドキュメントを参照してください。または、ベータ版製品をダウンロードした Web サイトを参照してください。
すべて展開する | すべて折りたたむ

目次

現象

ComboBox コントロールの DropDownStyle プロパティを DropDownList に設定してから、実行時に ComboBox に項目の先頭の文字列を入力しても、ComboBox で選択される項目が入力した文字列と一致しません。ComboBox の項目は入力した最後の文字に基づいて選択されます。たとえば、ComboBox の項目が、[red]、[oak]、[rose] である場合、ComboBox に ro と入力すると、[rose] ではなく [oak] にフォーカスが設定されます。

原因

この問題は、ComboBox の検索が文字列全体ではなく、単一の文字に基づいて行われるために発生します。

回避策

この問題を回避するには、ComboBox に入力したすべての文字が含まれる項目の検索を行うコードを追加します。このコードでは、文字列全体と一致率の高い項目の選択も行う必要があります。定期的に検索テキストを消去するには、Timer コントロールを使用します。これを行うには、次の手順を実行します。
  1. Microsoft Visual Studio .NET または Microsoft Visual Studio 2005 を実行します。Visual Basic .NET、Visual Basic 2005、または Visual C# .NET を使用して新しい Microsoft Windows アプリケーションを作成します。

    デフォルトで Form1 が作成されます。
  2. ツールボックスから、Timer コントロールを Form1 にドラッグします。
  3. [プロパティ] ウィンドウで、Enabled プロパティを True に設定します。
  4. 次のステートメントをコードの変数宣言セクションに追加します。

    Visual Basic .NET または Visual Basic 2005
    Dim searchstr As String
    Visual C# .NET
    string searchstr;
  5. 次のコードを Form1 の Load イベントに追加します。

    Visual Basic .NET または Visual Basic 2005
    'set the timer interval and start the timer
    Timer1.Interval = 1000
    Timer1.Start()
    Visual C# .NET
    //set the interval  and start the timer
    timer1.Interval =1000;
    timer1.Start();
  6. 次のコードを Timer1 の Tick イベントに追加します。

    Visual Basic .NET または Visual Basic 2005
    'empty the string for every 1 seconds
    searchstr = ""
    Visual C# .NET
    //empty the string for every 1 seconds
    searchstr="";
  7. 次のコードを ComboBox1 の KeyUp イベントに追加します。

    Visual Basic .NET または Visual Basic 2005
          searchstr = searchstr & Chr(e.KeyValue)
          ' If the Search string is greater than 1 then use custom logic
          If searchstr.Length > 1 Then
             Dim index As Integer
             ' Search the Item that matches the string typed
             index = ComboBox1.FindString(searchstr)
             ' Select the Item in the Combo
             ComboBox1.SelectedIndex = index
          End If  
    Visual C# .NET
             searchstr = searchstr + Convert.ToChar(e.KeyCode);
             // If the Search string is greater than 1 then use custom logic
             if (searchstr.Length > 1)
             {
                int index;
                // Search the Item that matches the string typed
                index=comboBox1.FindString(searchstr);
                // Select the Item in the Combo
                comboBox1.SelectedIndex=index;
             }

状況

この動作は仕様です。

詳細

現象の再現手順

  1. Microsoft Visual Studio .NET または Microsoft Visual Studio 2005 を実行します。Visual Basic .NET、Visual Basic 2005、または Visual C# .NET を使用して新しい Microsoft Windows アプリケーションを作成します。

    デフォルトで Form1 が作成されます。

    : Visual Basic 2005 では、コードを変更する必要があります。Windows フォーム プロジェクトを作成すると、デフォルトでプロジェクト用のファイルが 2 つ作成されます。フォームの名前が Form1 の場合、フォームを表すこの 2 ファイルの名前は Form1.vb および Form1.Designer.vb です。ユーザーによるコードの記述は Form1.vb ファイルで行います。Form1.Designer.vb ファイルには、Windows フォーム デザイナによってコードが記述されます。Windows フォーム デザイナは、Partial キーワードを使用して、Form1 を 2 つの異なるファイルに分けて実装します。この動作により、Windows フォーム デザイナが生成したコードが、ユーザーが記述したコード内に散在することがなくなります。

    Visual Basic 2005 の新しい言語機能強化の詳細については、以下の MSDN (Microsoft Developer Network) Web サイトを参照してください。
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    部分クラスおよび Windows フォーム デザイナの詳細については、次のマイクロソフト Web サイトを参照してください。
    http://msdn2.microsoft.com/ja-jp/library/ms171843.aspx
  2. ツールボックスから、ComboBox コントロールを Form1 にドラッグします。
  3. [ComboBox1] を右クリックし、[プロパティ] をクリックします。
  4. [プロパティ] ウィンドウで、[DropDownStyle] をクリックし、このプロパティを DropDownList に設定します。
  5. [プロパティ] ウィンドウで、[Items] をクリックし、省略記号ボタン ([...]) をクリックします。
  6. [文字列コレクション エディタ] で、行を分けてそれぞれ redoakrose と入力し、[OK] をクリックします。
  7. [デバッグ] メニューの [開始] をクリックして、アプリケーションを実行します。
  8. [ComboBox1] に ro と入力します。

関連情報

関連情報について参照するには、次の MSDN Web サイトにアクセスしてください。

ComboBox.DropDownStyle プロパティ
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsComboBoxClassDropDownStyleTopic.asp

プロパティ

文書番号: 814362 - 最終更新日: 2007年5月11日 - リビジョン: 2.4
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com