using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace test { public partial class Form3 : Form { public Form3() { InitializeComponent(); SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW); //API函数加载,实现窗体边框阴影效果 } #region 窗体边框阴影效果变量申明 const int CS_DropSHADOW = 0x20000; const int GCL_STYLE = (-26); //声明Win32 API [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetClassLong(IntPtr hwnd, int nIndex); #endregion // 定义下拉列表框 private ComboBox cmb_Temp = new ComboBox(); private void Form3_Load(object sender, EventArgs e) { // 绑定性别下拉列表框 BindSex(); // 绑定数据表 BindData(); // 设置下拉列表框不可见 cmb_Temp.Visible = false; // 添加下拉列表框事件 cmb_Temp.SelectedIndexChanged += new EventHandler(cmb_Temp_SelectedIndexChanged); // 将下拉列表框加入到DataGridView控件中 this.dgv_User.Controls.Add(cmb_Temp); } /// <summary> /// 绑定性别下拉列表框 /// </summary> private void BindSex() { DataTable dtSex = new DataTable(); dtSex.Columns.Add(" Value "); dtSex.Columns.Add(" Name "); DataRow drSex; drSex = dtSex.NewRow(); drSex[0] = " 1 "; drSex[1] = " 男 "; dtSex.Rows.Add(drSex); drSex = dtSex.NewRow(); drSex[0] = " 0 "; drSex[1] = " 女 "; dtSex.Rows.Add(drSex); cmb_Temp.ValueMember = " Value "; cmb_Temp.DisplayMember = " Name "; cmb_Temp.DataSource = dtSex; cmb_Temp.DropDownStyle = ComboBoxStyle.DropDownList; } /// <summary> /// 为避免连接数据库,这里手工构造数据表,实际应用中应从数据库中获取 /// </summary> private void BindData() { DataTable dtData = new DataTable(); dtData.Columns.Add(" ID "); dtData.Columns.Add(" Name "); dtData.Columns.Add(" Sex "); DataRow drData; drData = dtData.NewRow(); drData[0] = 1; drData[1] = " 张三 "; drData[2] = " 1 "; dtData.Rows.Add(drData); drData = dtData.NewRow(); drData[0] = 2; drData[1] = " 李四 "; drData[2] = " 1 "; dtData.Rows.Add(drData); drData = dtData.NewRow(); drData[0] = 3; drData[1] = " 王五 "; drData[2] = " 1 "; dtData.Rows.Add(drData); drData = dtData.NewRow(); drData[0] = 4; drData[1] = " 小芳 "; drData[2] = " 0 "; dtData.Rows.Add(drData); drData = dtData.NewRow(); drData[0] = 5; drData[1] = " 小娟 "; drData[2] = " 0 "; dtData.Rows.Add(drData); drData = dtData.NewRow(); drData[0] = 6; drData[1] = " 赵六 "; drData[2] = " 1 "; dtData.Rows.Add(drData); this.dgv_User.DataSource = dtData; } private void dgv_User_CurrentCellChanged(object sender, EventArgs e) { try { if (this.dgv_User.CurrentCell.ColumnIndex == 2) { Rectangle rect = dgv_User.GetCellDisplayRectangle(dgv_User.CurrentCell.ColumnIndex, dgv_User.CurrentCell.RowIndex, false); string sexValue = dgv_User.CurrentCell.Value.ToString(); if (sexValue == " 1 ") { cmb_Temp.Text = " 男 "; } else { cmb_Temp.Text = " 女 "; } cmb_Temp.Left = rect.Left; cmb_Temp.Top = rect.Top; cmb_Temp.Width = rect.Width; cmb_Temp.Height = rect.Height; cmb_Temp.Visible = true; } else { cmb_Temp.Visible = false; } } catch { } } /// <summary> /// 当用户选择下拉列表框时改变DataGridView单元格的内容 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmb_Temp_SelectedIndexChanged(object sender, EventArgs e) { if (((ComboBox)sender).Text == " 男 ") { dgv_User.CurrentCell.Value = " 男 "; dgv_User.CurrentCell.Tag = " 1 "; } else { dgv_User.CurrentCell.Value = " 女 "; dgv_User.CurrentCell.Tag = " 0 "; } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_User_Scroll(object sender, ScrollEventArgs e) { this.cmb_Temp.Visible = false; } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_User_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { this.cmb_Temp.Visible = false; } /// <summary> /// 绑定数据表后将性别列中的每一单元格的Value和Tag属性(Tag为值文本,Value为显示文本) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgv_User_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { for (int i = 0; i < this.dgv_User.Rows.Count; i++) { if (dgv_User.Rows[i].Cells[2].Value != null && dgv_User.Rows[i].Cells[2].ColumnIndex == 2) { dgv_User.Rows[i].Cells[2].Tag = dgv_User.Rows[i].Cells[2].Value.ToString(); if (dgv_User.Rows[i].Cells[2].Value.ToString() == " 1 ") { dgv_User.Rows[i].Cells[2].Value = " 男 "; } else if (dgv_User.Rows[i].Cells[2].Value.ToString() == " 0 ") { dgv_User.Rows[i].Cells[2].Value = " 女 "; } } } } } }
Copyright © 2024 严武 Powered by .NET 9.0 on Kubernetes