C#动态DataGridViewCell点击事件

C# Dynamic DataGridViewCell Click Event

我要单击一个 DGV,并根据此单击类型创建另一个 DGV 并显示在屏幕上以用于特殊工作目的。在其他 DGV 的创建过程中,一些单元格(一些行列逻辑)将通过程序代码自动单击。下面的代码执行此操作的 AUTO CLICK 代码部分。但我相信必须有另一种方法(如 Button PerformClick Event Fire)来实现此点击操作:

            DataGridViewCell dc;
            dc = MyDataGridView[0, 0];
            Rectangle rect = this.MyDataGridView.GetCellDisplayRectangle(0, 0, true);
            MouseButtons b = new MouseButtons();
            MouseEventArgs mev = new MouseEventArgs(b, 1, rect.X, rect.Y, 1);
            DataGridViewCellMouseEventArgs e = new DataGridViewCellMouseEventArgs(0, 0, rect.X + 2, rect.Y + 2, mev);
            MyDataGridView_CellMouseClick(dgvEntegCompany, e);

问题不是很清楚。您只是在寻找 CellClick 活动吗?

编辑:那么您需要执行 CellClick 的 content 吗? CellClick 是一个事件,因此它在单元格单击事件发生时触发。它可以包含 对方法的调用,如果您愿意,您也可以独立地“动态”调用该方法。

    // CellClick event
    private void dgItems_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        MyMessage(e.RowIndex, e.ColumnIndex);
    }

    // A user method
    private void MyMessage(Int32 irow, Int32 icol)
    {
        System.Windows.Forms.MessageBox.Show("A cell [" + irow  + ", " + icol  + "] was clicked!");
    }

    // invoking from a button
    private void button1_Click(object sender, EventArgs e)
    {
        MyMessage(this.dgItems.SelectedCells[0].RowIndex, this.dgItems.SelectedCells[0].ColumnIndex );
    }

编辑 2:

没有 AUTOCLICK 这样的东西。

  • 如果您想在预期事件中执行代码,请参阅上面的代码
  • 如果您想执行视觉更改,例如 select 一个单元格,那就去做吧。请注意,此操作取决于 SelectionMode 的设置,例如 CellFullRowSelect 的行为方式不同。它会是这样的:
    this.DataGridView1.ClearSelection();
    this.DataGridView1.Rows[0].Cells[3].Selected = True;
  • 如果您正在寻找调用动作的方法(又名计算机 AI 播放器),您很可能必须研究多线程,即 BackgroundWorker 并创建一个单独的线程来控制game/simulation/etc。那么这个问题还很遥远

备注:你必须更好地表达你的问题,这意味着要付出更多的努力来撰写它。你这样做只是在浪费社区时间。

我假设这就是你的意思……

”Fire Event Code for DataGridView Cell Click At Any Column – Row”

…是否要订阅网格事件,当用户“点击”网格中的任何单元格时将触发该事件。

如果是这种情况……那么,订阅网格 CellClickCellMouseClick 事件。

如果你想订阅grids CellMouseClick事件,那么可以在设计器中完成相关代码,或者你可以在InitializeComponent();方法之后的表单构造函数中添加代码调用它看起来像……

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_CellMouseClick);

然后您需要创建事件处理程序方法...dataGridView1_CellMouseClick. 在这个事件中您可以检查 DataGridViewCellMouseEventArgs 对象以查看单击了哪个单元格。该对象具有 属性 用于单击单元格的行索引和列索引。下面是一个例子。

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
  // This event will fire whenever a user clicks on a cell
  // we can get the row and column index of the "clicked" cell
  MessageBox.Show("Cell at Row: " + e.RowIndex + " Col: " + e.ColumnIndex + "  was clicked");
}

每次用户单击网格中的单元格时都会触发此事件。

目前还不清楚您究竟想用当前代码完成什么。

即使是这两行代码也可以执行所需的操作:

DataGridViewCellEventArgs e = new DataGridViewCellEventArgs(ColIdx, RowIdx);
MyDataGridvView_CellClick(myDGV, e);