C#一行代码实现(06)跨线程获取控件值,结合BeginInvoke和EndInvoke使用,以DataGridView为例

主要功能

  • 跨线程获取控件值,以DataGridView为例,结合BeginInvoke和EndInvoke使用

一行代码

object cellValue = dataGridView.ExInvokeGetCellValue(0,1);

代码封装

/// <summary>
/// DataGridView获取单元格值
/// </summary>
/// <param name="dataGridView"></param>
/// <param name="rowIndex"></param>
/// <param name="colIndex"></param>
/// <returns></returns>
public static object ExInvokeGetCellValue(this DataGridView dataGridView, int rowIndex, int colIndex)
{
    Func<DataGridView, int, int, object> func = new Func<DataGridView, int, int, object>((gridView, rIndex, cIndex) => gridView.Rows[rIndex].Cells[cIndex].Value);
    if (dataGridView.InvokeRequired)
    {
        IAsyncResult ia = dataGridView.BeginInvoke(func, new object[]
        {
            dataGridView,
            rowIndex,
            colIndex
        });
        return dataGridView.EndInvoke(ia);
    }

    return func.Invoke(dataGridView, rowIndex, colIndex);
}

声明