我在DataGridView
上有一个按钮列,我正在尝试处理Button.Click
事件,但单击按钮时没有任何反应。有什么帮助吗?
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.ColumnIndex.ToString());
if (e.ColumnIndex == 5)
{
MessageBox.Show((e.RowIndex + 1) + " Row " + (e.ColumnIndex + 1) + " Column button clicked ");
}
}
答案 0 :(得分:2)
我已经尝试了你的样本,但它确实有效。您是否真的将活动绑定到DataGridView
?
请检查InitializeComponent()
课程中的<YourFormName>.Designer.cs
方法。
它真的有吗
this.dataGridView1.CellClick +=
new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
并且您不会在代码中的其他位置删除处理程序?
DataGridViewButtonColumn MSDN页面可以这样说:
要响应用户按钮单击,请处理DataGridView.CellClick或DataGridView.CellContentClick事件。在事件处理程序中,您可以使用DataGridViewCellEventArgs.ColumnIndex属性来确定是否在按钮列中发生了单击。您可以使用DataGridViewCellEventArgs.RowIndex属性来确定单击是否发生在按钮单元格中而不是列标题上。
答案 1 :(得分:1)
让我得出/澄清您在c#windows窗体中的每行datagridview上都有按钮。 因此,为了获得datagridview的按钮点击事件,我向您展示了一个样本c#代码,它对我来说很好!下面给出的是我的c#datagridview按钮点击事件代码,它运行良好:
private void dgTasks_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var button = (DataGridView)sender;
if (button.Columns[6] is DataGridViewColumn && e.RowIndex >= 0)
{
MessageBox.Show("You have clicked Cancel button of a row of datagridview ", "Task", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
其中 dgTasks 是c#winforms中我的datagridview的名称。 button.Columns [6] 是我的datagridview的列号,其中我的按钮列名为: btnCancel ,标题文字:取消和文字:< strong>取消即可。 这只是一个样本!希望你觉得它很有用。!
答案 2 :(得分:0)
听起来您的活动未正确注册。要检查,请在Designer中突出显示DataGridView
控件并选择Properties
,在Events
下检查CellClick
事件是否有条目,如果不是,则应该有下拉列表应该列出你的活动 - 选择它,这应该可以解决你的问题。