none
ComboBox通过TAB键获取焦点时自动显示下拉列表的问题 RRS feed

  • 问题

  • 我想通过TAB键使ComboBox获得焦点时,自动显示下拉列表,通过向上和向下键选择需要的选项。并可以使用鼠标从ComboBox的选项中选择需要的选项。目前的做法如下:

     this.toolStripCameraList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

     this.toolStripCameraList.SelectedIndexChanged += new System.EventHandler(this.toolStripCameraList_SelectedIndexChanged);

     this.toolStripCameraList.Enter += new System.EventHandler(this.toolStripCameraList_Enter);

      private void toolStripCameraList_Enter(object sender, EventArgs e)
      {

          //添加if判断是为了防止使用鼠标选择时,会显示下拉列表框,然后下拉列表框消失
          if (MouseButtons == MouseButtons.None)
                {
                   toolStripCameraList.DroppedDown = true;
                }
       }

       private void toolStripCameraList_SelectedIndexChanged(object sender, EventArgs e)
      {

           #region 功能实现

          #endregion

      }

      问题:

       1:每次使用TAB键使ComboBox获得焦点时,都会触发ComboBox的SelectedIndexChanged事件,有没有办法不触发该事件?

       2:有没有更好的办法实现既可以通过TAB键自动显示下拉列表,也可以通过鼠标显示下拉列表的功能?

       多谢~~    

    2011年2月10日 7:47

答案

  • 你好 Jamie_change,

    因为在你使用tab键将焦点移到ComboBox,然后使用向上和向下键操作的时候,文本框中的数据是随着进行更改的,所以会触发SelectedIndexChanged事件。

    所以如果你想避免这种问题的发生,将很难做到,至少现在我没有对应的方案。我认为你可以将SelectedIndexChanged事件处理代码放到Leave事件处理方法中。

    如果你想使用SelectedIndexChanged发生时的一些数据,你可以自定义一个类来存贮数据,然后再Leave事件处理方法中使用这些数据。


    Mike [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月14日 15:43
    版主