主要功能

  • 跨线程获取控件值,以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);
}

声明

版权声明:本文为easynetwork原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/easynetwork/p/13872377.html