combobox如何改变下拉框的宽度 我在combobox里绑定的时候可能很长,有的超过了系统自己给的宽度,我想改变combobox的宽度,让它的宽度刚好等于下拉框中最长的项的长度,各位大哥,帮帮小弟。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大多数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 使用API函数SendMessage和CB_SETDROPPEDWIDTH关键字 楼主说的是“我想改变combobox的宽度,让它的宽度刚好等于下拉框中最长的项的长度”啊 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); } } ComboBox cbx = new ComboBox(); cbx.MaxDropDownItems = 100; //设置下拉时显示的项数(高度) cbx.Width = 200; //设置宽度 计算机系毕业设计的几个问题,求前辈的经验 求正則表達式 C#如何保护代码不被反编译? 新人求助 100分,Server.UrlEncode()提示未将对象引用设置到对象的实例? 键盘虚码值 C# 分页 如何用正则表达式 替换index.jsp_type=null&id=020 中的下横线 '_'为'?' .net 获取电脑安装软件 抓图,rm,asf,.... WCF证书验证为什么要在客户端做?这样似乎没验证的意义了? 把字符串中 相邻 的 多个空格转换 成一个
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);
}
}
ComboBox cbx = new ComboBox();
cbx.MaxDropDownItems = 100; //设置下拉时显示的项数(高度)
cbx.Width = 200; //设置宽度