前面啥也没有
实现
加载界面时根据内容更改宽度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int DropDownWidth(ComboBox myCombo) { int maxWidth = 0, temp = 0; foreach (var obj in myCombo.Items) { temp = TextRenderer.MeasureText(obj.ToString(), myCombo.Font).Width; if (temp > maxWidth) { maxWidth = temp; } } return maxWidth; }
comboBox1.DropDownWidth = comboBox1.Items.Cast<string>().Max(x => TextRenderer.MeasureText(x, comboBox1.Font).Width);
|
扩展
Linq Cast
Cast操作符
Cast操作符用于将一个类型为IEnumerable的集合对象转换为IEnumerable<\T>类型的集合对象。也就是非泛型集合转成泛型集合,因为在Linq to OBJECT中,绝大部分操作符都是针对IEnumerable<\T>类型进行的扩展方法。因此对非泛型集合并不适用。
1 2 3 4 5 6 7 8 9
| ArrayList al = new ArrayList(); al.Add(1); al.Add(2); al.Add(3); IEnumerable<int> IEInt = al.Cast<int>(); foreach (var i in IEInt) { Console.WriteLine(i); }
|
OfType操作符
OfType操作符与Cast操作符类似,用于将类型为IEnumerable的集合对象转换为IEnumerable<\T>类型的集合对象。不同的是,Cast操作符会视图将输入序列中的所有元素转换成类型为T的对象,如果有转换失败的元素存在Cast操作符将抛出一个异常;而OfType操作符仅会将能够成功转换的元素进行转换,并将这些结果添加到结果序列中去。与Cast操作符相比,OfType操作符更加安全。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ArrayList al = new ArrayList(); al.Add(1); al.Add(2); al.Add("a");
IEnumerable<int> IEOfType = al.OfType<int>(); foreach (int i in IEOfType) { Console.WriteLine(i); }
|