c# - 时间:2019-01-10 标签:c#datagridcomboboxgetvalueselected
问题描述
我有一个带有组合框的数据网格,我想获得我的价值,我可以得到它,但我不知道为什么,我得到了 4 次???有人可以帮助我吗?
这是我的代码:
private void dgvLocataire_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dgvLocataire.BeginEdit(false);
var ec = dgvLocataire.EditingControl as DataGridViewComboBoxEditingControl;
if (ec != null && ec.Width - e.X < SystemInformation.VerticalScrollBarWidth)
ec.DroppedDown = true;
if ((e.ColumnIndex != 3) && (e.ColumnIndex != 4))
{
dgvLocataire.Columns[e.ColumnIndex].ReadOnly = true;
}
dgvLocataire.CellValueChanged +=
new DataGridViewCellEventHandler(dgvLocataire_CellValueChanged);
//dgvLocataire.CurrentCellDirtyStateChanged +=
//new EventHandler(dgvLocataire_CurrentCellDirtyStateChanged);
}
private void dgvLocataire_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
dgvLocataire.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dgvLocataire_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
string comboboxSelectedValue = string.Empty;
if (dgvLocataire.Columns[e.ColumnIndex].GetType() == typeof(DataGridViewComboBoxColumn))
comboboxSelectedValue = dgvLocataire.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
MessageBox.Show(comboboxSelectedValue);
}
当我在组合框中选择一个值时,消息框出现 4 次。谢谢你的帮助
解决方案
在dgvLocataire_CellMouseClick方法中,您每次单击时都订阅dgvLocataire_CellValueChanged 。这意味着它可以被多次调用 => MessageBox.Show(comboboxSelectedValue) 被多次调用。
您应该只在此表单初始化时订阅此事件一次。
推荐阅读
- python - 我无法在pygame中移动精灵
- php - 如何解决 wamp 上的 mysql 端口 3306 错误?
- android - 重复警报 BroadcastReceiver Intent 字符串附加信息未更新
- node.js - 如何在 Postman/form-data 的嵌套对象中发布数组?
- python-3.x - 如何从TensorFlow TFRecord中的二进制字符串中提取字符串
- .net - Azure PutBlockAsync 和 PutBlockListAsync 用于块上传
- python - 如何从具体类中设置抽象 Django mixin 的初始化值
- c# - 注册新的 TService 时如何在 SimpleInjector 中使用通用接口?
- r - 康威麦克斯韦分布密度图
- sql - Microsoft SQL Server 2017 Developer 下载错误