1.只能输入数字
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8) { e.Handled=true; }
2.确认是否删除按钮
MessageBoxButtons btn = MessageBoxButtons.YesNo; DialogResult result; result = System.Windows.Forms.MessageBox.Show("确定删除?", "提示信息", btn); if (result == DialogResult.Yes) { Console.WriteLine("删除成功"); }
3.给cbo添加一个空项
DataSet ds = sb.GetChildDept(id); DataRow dr = ds.Tables[0].NewRow(); dr[0] = ""; ds.Tables[0].Rows.InsertAt(dr,0); cboItemName.ValueMember = "ID"; cboItemName.DisplayMember = "DeptName"; cboItemName.DataSource = ds.Tables[0];
4.dgv样式设置
this.dgvDept.EnableHeadersVisualStyles = false; this.dgvDept.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); this.dgvDept.AutoGenerateColumns = false; this.dgvDept.Columns.Clear(); Dictionary<string, string> dataText = new Dictionary<string, string>(); dataText.Add("DeptNO","部门编号"); dataText.Add("DeptName","部门名称"); dataText.Add("Phone","部门电话"); dataText.Add("Manager","部门经理"); dataText.Add("Deputy","部门副经理"); dataText.Add("Remark","备注"); foreach (KeyValuePair<string, string> kvp in dataText) { DataGridViewTextBoxColumn dgvc = new DataGridViewTextBoxColumn(); dgvc.DataPropertyName = kvp.Key; dgvc.HeaderText = kvp.Value; dgvc.Name = kvp.Key; dgvc.ReadOnly = true; // dgvc.DefaultCellStyle.Alignment=(kvp.Value == "部门电话") ? System.Windows.Forms.DataGridViewContentAlignment.MiddleRight : System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dgvc.HeaderCell.Style.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;//居中 dgvc.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; if (kvp.Value == "部门编号" || kvp.Value == "部门名称" || kvp.Value == "部门电话"||kvp.Value=="部门经理"||kvp.Value=="部门副经理") dgvc.Width=116; if (kvp.Value == "备注") dgvc.Width = 210; this.dgvDept.Columns.Add(dgvc); }
5.c#中的datetimepicker完整显示年月日时分秒
① CustomFormat属性设置为: yyyy-MM-dd HH:mm:ss ② 记住还要修改一个属性值,Format属性 可选项改为Custom ,默认是Long
6.dgv添加行的问题
for (int i = 0; i < 5; i++) { dgv.Rows.Add(); DataGridViewRow row = dgv.Rows[i]; row.Cells["DeptNO"].Value = "DeptNO"; row.Cells["DeptName"].Value = "DeptName"; row.Cells["Phone"].Value = "Phone"; row.Cells["Manager"].Value = "Manager"; row.Cells["Deputy"].Value = "Deputy"; row.Cells["Remark"].Value = "Remark"; }
7.dgv赋值问题
dgvDetails2.Rows[i].Cells["Task"].Value="字符串" //不论是否为空
8.dgv行清除问题
while (dgv.Rows.Count > 1) { dgv.Rows.RemoveAt(0); } dgv.Refresh();
DataTable table = new DataTable(); table.Rows.Clear(); dgv.DataSource = table; dgv.Refresh();//这样的话不能直接赋值了 只能绑定数据库了
9.dgv列隐藏
this.dataGridView1.Columns["CustomerID"].Visible = false;
10.DataGridView多行显示
第一、设置RowsDefaultCellStyle的WrapMode属性值为true(表示支持多行显示)
第二、设置AllowUserToResizeColumns属性值为true(表示用户拉大行高)
第三、设置AutoSizeRowsMode属性值为AllCells(表示所有单元格自动调节单元格高度),属性值为DisplayedCells(表示当前单元格自动调节高度,可以提高性能。)
11.dataGridView最左侧空列的设定
dataGridView1.RowHeadersWidth = 60; //设定左侧空列的宽度 dataGridView1.RowHeadersVisible = false; //隐藏空列,使不可见
12.dgv最左边一列添加行号
for (int i = 1; i <= dgv.RowCount; i++) { this.dgv.Rows[i - 1].HeaderCell.Value = i.ToString(); }
13.dgv鼠标右键行复制
dgv.ContextMenuStrip = this.contextMenuStrip1; dgv.Columns[0].ContextMenuStrip = this.contextMenuStrip1; dgv.Columns[0].HeaderCell.ContextMenuStrip = this.contextMenuStrip1; dgv.Rows[0].ContextMenuStrip = this.contextMenuStrip1; dgv[0, 0].ContextMenuStrip = this.contextMenuStrip1; if (e.Button == MouseButtons.Right) { if (e.RowIndex >= 0) { //选中一行 if (dgv.Rows[e.RowIndex].Selected == true) { for (int i = 0; i < dgv.SelectedCells.Count; i++) { dgv.CurrentCell = dgv.Rows[e.RowIndex].Cells[i]; str += dgv.CurrentCell.Value.ToString() + " "; } } else { dgv.CurrentCell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; str += dgv.CurrentCell.Value.ToString(); } } }
Clipboard.SetText(str); str = "";
14 dgv删除一行或者多行
for (int i = this.dgv.SelectedRows.Count; i > 0; i--) { int ID = Convert.ToInt32(dgv.SelectedRows[i - 1].Cells[0].Value); dgv.Rows.RemoveAt(dgv.SelectedRows[i - 1].Index); if (bll.Delete(ID)) { MessageBox.Show("删除成功!"); } }