我在combobox里绑定的时候可能很长,有的超过了系统自己给的宽度,我想改变combobox的宽度,让它的宽度刚好等于下拉框中最长的项的长度,各位大哥,帮帮小弟。

解决方案 »

  1.   

    大多数System.Windows.Forms命名空间里的可视控件是由Control类继承下来的,它可以实现两种属性:Anchor和Dock。 Anchor属性可以被设定为Top,Bottom,Left和Right的任何组合。默认设置是Top,Left。这可以保持控件的top-left角与视窗边框具有相同的相对位置。设置Anchor属性为Top and Bottom可以垂直地调整控件,保证从视窗底部到控件底部距离相同。Me.ComboBox.Anchor = (System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) Dock属性。这个属性可以被设置为Top,Bottom,Left,Right或Fill。将其设置为Top,Bottom,Left或 Right可以使控件紧挨指定的视窗边缘,或者紧挨已放置到相应视窗边缘的其他控件。设置Dock属性为Fill可以使控件调整为充满视窗的整个客户区。Me.ComboBox.Dock = System.Windows.Forms.DockStyle.Bottom 你还可以使用DockPadding对象来设置填充视窗边框和已放置好的控件间的区域。它有对应每个视窗边框的属性,如果想要边框对每个边都一致也可以通过设置All属性实现。Me.DockPadding.All = 5
      

  2.   

    使用API函数SendMessage和CB_SETDROPPEDWIDTH关键字
      

  3.   

    楼主说的是“我想改变combobox的宽度,让它的宽度刚好等于下拉框中最长的项的长度”啊
      

  4.   


    public partial class Form1 : Form
        {
            [System.Runtime.InteropServices.DllImport("user32.dll",EntryPoint="SendMessageA")]
            public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
            const int CB_SETDROPPEDWIDTH = 0x160;        public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                ComboBox cb = new ComboBox();
                cb.Name = "combo1";
                cb.Width = 100;
                cb.Items.Add("开始aaaaaaaaaaaaaaaaaaaaaaaaa结束");
                cb.Items.Add("开始bbbbbbbbbbbbbbbbbbbbbbbbb结束");
                cb.Items.Add("开始ccccccccccccccccccccccccc结束");
                cb.Items.Add("开始ddddddddddddddddddddddddd结束");
                this.Controls.Add(cb);            //校正宽度
                int nWidth = 0,nTemp = 0;
                Graphics g = cb.CreateGraphics();
                for(int i=0;i<cb.Items.Count;i++)
                {
                    nTemp = (int)g.MeasureString(cb.Items[i].ToString(), cb.Font).Width;
                    if (nTemp  > nWidth)
                        nWidth = nTemp;
                }
                g.Dispose();
                SendMessage(cb.Handle, CB_SETDROPPEDWIDTH, nWidth, 0);
            }
        }
      

  5.   


                ComboBox cbx = new ComboBox();
                cbx.MaxDropDownItems = 100; //设置下拉时显示的项数(高度)
                cbx.Width = 200; //设置宽度