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("删除成功!");
}
}