C# 有没有办法在函数中投射 2 个事件?

1 c# events

我正在尝试创建一个函数,该函数将对 DataGridView 中的 2 个(鼠标)事件执行一些指令。为了不重复两个事件中的说明。

这是我的代码:

        private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && dgv.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
            { Process.Start(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string); }
        }

        private void dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && dgv.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
            { Process.Start(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string); }
        }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过这样做:

        private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            ReLink(e);
        }

        private void dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            ReLink(e);
        }

        //no matter which event I will specify, it is clear that it will only work for one event
        private void ReLink(DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0 && dgv.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)
            { Process.Start(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string); }
        }
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法解决这个问题?...

小智 6

你可以继续这个

    private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        ReLink(e.ColumnIndex ,e.RowIndex);
    }

    private void dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        ReLink(e.ColumnIndex ,e.RowIndex);
    }

    //no matter which event I will specify, it is clear that it will only work for one event
    private void ReLink(int colIndex, int rowIndex)
    {
        if (colIndex >= 0 && rowIndex >= 0 && dgv.Rows[rowIndex].Cells[colIndex] is DataGridViewLinkCell)
        { Process.Start(dgv.Rows[rowIndex].Cells[colIndex].Value as string); }
    }
Run Code Online (Sandbox Code Playgroud)