【问题标题】:Why Invalidate() should be called outside the control then it can work?为什么 Invalidate() 应该在控件之外调用然后它可以工作?
【发布时间】:2011-03-21 21:50:06
【问题描述】:

我正在使用 C# + winforms 开发软件。
我有一个包含多个 DataGridView 的 UserControl

datagridview1.datasource = from p in dc.doctor select p;

我使用linq to sql用dataSource填充dataGridView,因为我需要刷新数据源来更新记录,所以我创建了一个新的dataContext并重新分配了数据源。

datagridview1.datasource = from p in dc.doctor select p;  

一开始我发现,虽然我重置了datasource,但是datagridview还是不能刷新,有人告诉我应该在datagridview上调用invalidate函数,我试过了。在一定程度上,它是有效的。 但是,如果我在 UserControl 的类中调用 Invalidate,它将不起作用。
如果我在 UserControl 的类上创建一个公共函数,然后用 userControl.refreshRecord() 调用它,那么它就可以工作了。

有人可以指出我错过了什么吗?当有人调用 invalidate 时,它​​什么时候才能真正起作用?
提前致谢!

【问题讨论】:

  • 问题不是在包含控件中被调用,而是在处理某些没有预期效果的特定消息期间被调用。

标签: c# winforms linq-to-sql datasource invalidation


【解决方案1】:

当控件完成所有其他事情(如数据加载)时使工作无效......

【讨论】:

    【解决方案2】:

    为datagridview调用dgv.Invalidate()方法。

    【讨论】:

    • 你看完我的问题了吗?我调用了 invalidate 函数,但是如果我在控件内部调用它,它将不起作用。我必须在用户控件之外调用它,然后它才能工作。
    • 绝妙的正确答案是它有效,但你错了。哇,真是个病态的家伙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2015-07-12
    • 2013-03-21
    • 2014-01-17
    相关资源
    最近更新 更多