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 = " 女 "; } } } } } }
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。