C# DataGridView 中 DataGridViewComboBoxCell 下拉列表框设置选择事件

    private void DataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {

            if (StoreSwap_Tab_DataGridView.CurrentCell != null && e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
            {
                //创建下拉列表框改变事件
                (e.Control as ComboBox).SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
                //创建下拉列表框离开焦点事件 添加该事件是为了删除动态事件 以免多次调用
                (e.Control as ComboBox).Leave += new EventHandler(ComboBox_Leave);
            }
        }
        //离开焦点事件
    private void ComboBox_Leave(object sender, EventArgs e)
        {
            //删除动态调用
            (sender as ComboBox).SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
            (sender as ComboBox).Leave -= new EventHandler(ComboBox_Leave);
        }
        //下拉列表框改变事件
    private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {

        }   

在WinForm,如果你想在DataGridView使用下拉列表,你可以通过监听DataGridView的CurrentCellChanged事件来实现。在事件处理程序,你可以获取当前单元格所属的列,并判断是否是需要显示下拉列表的列。如果是,你可以获取当前单元格的位置和大小,并将下拉列表的位置和大小设置为相同。然后,你可以将单元格的内容显示为下拉列表的当前项。最后,在下拉列表的SelectedIndexChanged事件,你可以将选择的项更新到DataGridView相应的单元格。 以下是一个示例代码供参考: private void dataGridView1_CurrentCellChanged(object sender, EventArgs e) { DataGridViewColumn column = dataGridView1.CurrentCell.OwningColumn; if (column.Name.Equals("Column2")) // 如果是要显示下拉列表的列的话 { int columnIndex = dataGridView1.CurrentCell.ColumnIndex; int rowIndex = dataGridView1.CurrentCell.RowIndex; Rectangle rect = dataGridView1.GetCellDisplayRectangle(columnIndex, rowIndex, false); comboBox1.Left = rect.Left; comboBox1.Top = rect.Top; comboBox1.Width = rect.Width; comboBox1.Height = rect.Height; string consultingRoom = dataGridView1.Rows\[rowIndex\].Cells\[columnIndex\].Value.ToString(); int index = comboBox1.Items.IndexOf(consultingRoom); comboBox1.SelectedIndex = index; comboBox1.Visible = true; } else { comboBox1.Visible = false; } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (dataGridView1.CurrentCell != null) { dataGridView1.CurrentCell.Value = comboBox1.Items\[comboBox1.SelectedIndex\]; } } // 将下拉列表加入到DataGridView的控件集合内,否则下拉列表不会显示在你点击的单元格上 dataGridView1.Controls.Add(comboBox1); 请注意,这只是一个示例代码,你需要根据你的具体需求进行适当的修改和调整。 #### 引用[.reference_title] - *1* *2* *3* [Winform datagridview显示下拉框示例](https://blog.csdn.net/Pei_hua100/article/details/124492408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值