首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# CellValueNeeded blocks表单

C# CellValueNeeded blocks表单
EN

Stack Overflow用户
提问于 2017-11-22 22:59:25
回答 1查看 104关注 0票数 0

我为Form继承了一个类。这个类包含一个按钮和一个自定义的DataGridView。

DataGridView根据DataBase显示项目,加载可能需要很长时间。我实际上有:

代码语言:javascript
复制
public partial class dlgDetailsObj : Form
{
    List<object> listItem;
    public dlgDetailsObj(List<object> obj)
    {
        listItem = obj;
        customGridView.CellValueNeeded += onCellValueNeeded;
        customGridView.VirtualMode = true;
    }

    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        customGridView.RowCount = listItem.Count; // When RowCount changes, items are loaded
    }

    private void onCellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
    {
        if (e.RowIndex >= listItem.Count)
            return;

        String value = "";
        customItem item = listItem[e.RowIndex];
        if (e.ColumnIndex == columnId.Index)
        {
            value = item.Name; // If Name is null, it is loaded from dataBase (can take time)
        }
        /* Some else if*/

        e.Value = value;
}

我的问题是,当customGridView开始加载时,close按钮没有加载,用户无法单击它(如果加载时间太长,就会取消)。

我怎样才能把我的代码段放到确保用户可以取消的地方?

编辑:我正在使用虚拟GridView (我更新了我的代码)

EN

回答 1

Stack Overflow用户

发布于 2017-11-22 23:06:13

这里的问题是UI和数据加载都是在同一个线程中顺序发生的。

因此,在处理完所有数据之前,UI都会被阻塞。您应该尝试使用多线程,并在单独的线程而不是UI中加载数据。

像这样的东西

代码语言:javascript
复制
public partial class dlgDetailsObj : Form
{
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        UpdateListFromDatabase();
    }

    private static void UpdateListFromDatabase()
    {
         var thread = new Thread(() =>
             {
                 //code that should run separately from the UI
             });
         thread.Start();
    }       
}

这里有一个链接,它将帮助你学习基础知识。

https://visualstudiomagazine.com/Articles/2010/11/18/Multithreading-in-WinForms.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47437800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档