winform碎片

1.通过同一个pictureBox控件加载不同的图片,在加载前需要释放控件里之前的Image。

pictureBox1.Image.Dispose();//Dispose之后对象就不存在了,只能重新Create.

2.DataTable添加一个checkbox新列作为第一列,DataTable绑定到datagridView。

//add a new column for checkbox
DataColumn dc = new DataColumn("IsSelected", System.Type.GetType("System.Boolean"));
dc.DefaultValue = false;
dt.Columns.Add(dc);
dt.Columns["IsSelected"].SetOrdinal(0);

//设置只有checkbox可编辑

dataGridView1.DataSource = dt;
for (int i = 1; i < dt.Columns.Count; i++)
{
dataGridView1.Columns[i].ReadOnly = true;
}

//默认不选中第一行

/*默认不选中第一行第一列的动作要放在窗体的Load事件里或者button等其他事件里,若DataGridView作为自定义控件出现,则应该在父容器的Load事件里写以下语句或者在父容器load之后再执行下列动作。*/

DataGridView.Rows[0].Selected=false;
dataGridView1.Refresh();

//给添加的DataGridViewComboBoxColumn默认选中某项

((DataGridViewComboBoxColumn)dataGridView1.Columns["columnName"]).DefaultCellStyle.NullValue = 
"value";

//绑定数据源的datagridview插入新行

 DataRow dr = ((DataTable)dataGridView1.DataSource).NewRow();

 ((DataTable)dataGridView1.DataSource).Rows.InsertAt(dr,e.RowIndex+1);

//datagridviewcolumncell可换行显示

dataGridView1.Columns[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True;

3.ComboBox输入时提示,suggest为模糊查询,append为自动填充,可在控件的property处设定。

comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;  

comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; 

4.WinForm窗体默认情况下AutoScaleMode为Font,但为了解决两台不同分辨率的机子显示效果相同,保证控件大小一致,可将此属性设成None,禁用缩放。

MSDN关于此项属性的枚举类型的说明如下:
None:禁用缩放。
Font:根据类使用的字体(通常为系统字体)的维度控制缩放。
Dpi:根据显示分辨率控制缩放。常用分辨率为 96120 DPI。
Inherit:根据类的父类的缩放模式控制缩放。如果不存在父类,则禁用自动缩放。

5.DataGridView绑定数据量太大时重绘很慢,可将 AutoSizeColumnsMode和AutoSizeRowsMode设成None,改变行高的设置(RowTemplate->Height).

6. 有关combobox

(1)List绑定到combobox的高效方法:

 cmb.Items.AddRange(list.ToArray());

(2)combobox的Items放到一个List中:

List<string> list = cmb.Items.Cast<object>().Select
(item => item.ToString()).ToList();

原文地址:https://www.cnblogs.com/nora/p/4956402.html