1.问题情境:实际中的下拉框默认向下扩展,如果屏幕下方空间不足,会向上扩展。

      向下扩展情况下,有时候会超出form窗体。

2.解决办法:

  寻找相关属性无果。

  退而求其次,重画item的框。发现DrawItem事件仅控制在下拉列表的范围内。

  再退,重写combobox,不如干脆自定义。textBox+button+listBox即可。

3.代码:

  仅显示关键代码:listBox的显示问题,默认不可见。

//button:画有▼
        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Visible = !listBox1.Visible;
            listBox1.Focus();
        }

        //listBox
        private void listBox1_LostFocus(object sender,EventArgs e)
        {
            listBox1.Visible = false;
        }

        //窗体
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            listBox1.Visible = false;
        }

        //listBox
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            textBox1.Text = (string)listBox1.SelectedItem;
            listBox1.Visible = false;
        }

 4.注意:listBox MultiColumn属性为false,滚动条为竖向。