2.DataGridView用linq查询
IEnumerable<DataGridViewRow> emplist = this.dataGridEmp.Rows.Cast<DataGridViewRow>();//扩展方法,转换类型
var query = emplist.Max(s => s.Cells[1].Value);//查询第二列的最大值
3.动态添加控件时闪烁问题
将以下代码加在窗体里
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
CreateParams.Style的参数链接为:
https://msdn.microsoft.com/zh-cn/library/czada357.aspx
WS_OVERLAPPED = 0; {重叠式窗口, 应带标题栏和边框}
WS_POPUP = DWORD($80000000); {弹出式窗口, 不能与 WS_CHILD 一起使用}
WS_CHILD = $40000000; {子窗口, 不能与 WS_POPUP 一起使用}
WS_MINIMIZE = $20000000; {最小化窗口}
WS_VISIBLE = $10000000; {初始时可见}
WS_DISABLED = $8000000; {禁止输入}
WS_CLIPSIBLINGS = $4000000; {裁剪子窗口, 也就是子窗口重绘不影响重叠的其他子窗口, 应与 WS_CHILD 一起使用}
WS_CLIPCHILDREN = $2000000; {在父窗口中绘图时绕开子窗口区域, 创建父窗口是使用}
WS_MAXIMIZE = $1000000; {最大化窗口}
WS_CAPTION = $C00000; {有标题栏}
WS_BORDER = $800000; {有细线边框}
WS_DLGFRAME = $400000; {对话框窗口}
WS_VSCROLL = $200000; {有垂直滚动条}
WS_HSCROLL = $100000; {有水平滚动条}
WS_SYSMENU = $80000; {带系统标题栏, 须同时指定 WS_CAPTION}
WS_THICKFRAME = $40000; {带宽边框, 宽边框用于改变窗口大小}
WS_GROUP = $20000; {能用方向键转移焦点}
WS_TABSTOP = $10000; {能用 TAB 转移焦点}
WS_MINIMIZEBOX = $20000; {有最小化按钮}
WS_MAXIMIZEBOX = $10000; {有最大化按钮}
WS_TILED = WS_OVERLAPPED;
WS_ICONIC = WS_MINIMIZE;
WS_SIZEBOX = WS_THICKFRAME;
WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW;
WS_POPUPWINDOW = (WS_POPUP or WS_BORDER or WS_SYSMENU);
WS_CHILDWINDOW = (WS_CHILD);
WS_EX_DLGMODALFRAME = 1; {指定双边界窗口; 藉此指定 WS_CAPTION 创建标题栏}
WS_EX_NOPARENTNOTIFY = 4; {在窗口创建或取消时不向父窗口发送 WM_PARENTNOTIFY 消息}
WS_EX_TOPMOST = 8; {在所有非最顶层窗口的上面}
WS_EX_ACCEPTFILES = $10; {可接受拖放文件}
WS_EX_TRANSPARENT = $20; {透明样式, 在同属窗口已重画时该窗口才可重画}
WS_EX_MDICHILD = $40; {创建一个 MDI 子窗口}
WS_EX_TOOLWINDOW = $80; {工具窗口}
WS_EX_WINDOWEDGE = $100; {带立体的边框}
WS_EX_CLIENTEDGE = $200; {带阴影的边界}
WS_EX_CONTEXTHELP = $400; {标题包含一个问号标志, 不能与 WS_MAXIMIZEBOX 和 WS_MINIMIZEBOX 同时使用}
WS_EX_RIGHT = $1000; {窗口具有右对齐属性}
WS_EX_LEFT = 0; {窗口具有左对齐属性, WS_EX_LEFT 是缺省设置}
WS_EX_RTLREADING = $2000; {窗口文本从右到左}
WS_EX_LTRREADING = 0; {窗口文本从左到右, WS_EX_LTRREADING 是缺省设置}
WS_EX_LEFTSCROLLBAR = $4000; {垂直滚动条在左边界, 只用于特殊语言环境}
WS_EX_RIGHTSCROLLBAR = 0; {垂直滚动条在右边界, WS_EX_RIGHTSCROLLBAR 是缺省设置}
WS_EX_CONTROLPARENT = $10000; {允许用户使用 Tab 键在窗口的子窗口间搜索}
WS_EX_STATICEDGE = $20000; {窗口不可用时创建一个三维边界}
WS_EX_APPWINDOW = $40000; {当窗口可见时, 将一个顶层窗口放置到任务条上}
WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE); {立体边框并带阴影}
WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE or WS_EX_TOOLWINDOW or WS_EX_TOPMOST); {立体边框、工具条窗口样式、在顶层}
WS_EX_LAYERED = $00080000; {分层或透明窗口, 该样式可使用混合特效}
WS_EX_NOINHERITLAYOUT = $00100000; {子窗口不继承父窗口的布局}
WS_EX_LAYOUTRTL = $00400000; {从右到左的布局}
WS_EX_COMPOSITED = $02000000; {用双缓冲从下到上绘制窗口的所有子孙}
WS_EX_NOACTIVATE = $08000000; {处于顶层但不激活}