【问题标题】:Handling Event - form/control not updating?处理事件 - 表单/控件不更新?
【发布时间】:2013-02-06 16:09:51
【问题描述】:

首先,我不是全职从事 winform 开发工作,所以请不要责怪我...

正如标题所描述的那样,在引发和捕获事件后刷新表单上的控件时遇到问题。

在“Form1”上,我有一个 Dockpanel,正在创建两个新表单,如下所示:

Public Sub New()
    InitializeComponent()

    dpGraph.DockLeftPortion = 225
    dpGraph.BringToFront()

    Dim frmT As frmGraphTools = New frmGraphTools()
    Dim frmG As frmGraph = New frmGraph()

    AddHandler frmT.UpdateGraph, AddressOf frmG.RefreshGraph
    frmT.ShowHint = DockState.DockLeft
    frmT.CloseButtonVisible = False
    frmT.Show(dpGraph)

    frmG.ShowHint = DockState.Document
    frmG.CloseButtonVisible = False
    frmG.Show(dpGraph)
End Sub

在 frmGraphTools 类中,我定义了以下委托、事件和按钮单击事件:

Public Delegate Sub GraphValueChanged(ByVal datum As Date)
Public Event UpdateGraph As GraphValueChanged

Private Sub btnSaveMach_Click(sender As Object, e As EventArgs) Handles btnSaveMach.Click
    RaiseEvent UpdateGraph(dtpJobDate.Value.ToString())
End Sub

在 frmGraph 类中,我定义了以下 Sub:

Public Sub RefreshGraph(ByVal datum As Date)
    CreateGraph(datum)
    frmGraphBack.dpGraph.Refresh()
End Sub

我在 frmGraph 表单上有一个 ZedGraph 控件,它应该按照 frmGraphTools 上的定义在单击按钮时刷新/重绘。一切似乎都正常,frmGraph 中的 RefreshGraph Sub 正在执行,新数据被推送到 ZedGraph 控件中,但是,控件永远不会更新。必须做什么才能让 frmGraph 表单或 ZedGraph 控件正确更新/刷新/重绘?

【问题讨论】:

    标签: vb.net winforms zedgraph dockpanel-suite


    【解决方案1】:

    从正确的 frmGraph 实例传递对 RefreshGroup 方法的引用

     AddHandler frmT.UpdateGraph, AddressOf frmG.RefreshGraph
    

    此调用也应由编译器标记,因为您传递的是字符串而不是日期

     RaiseEvent UpdateGraph(dtpJobDate.Value.ToString())
    

    你可能有Option Strict Off

    【讨论】:

    • 史蒂夫,感谢您的回复。我已经相应地更新了 AddHandler .. DUH!盯着它看太久了。但是我的控件仍然没有更新?在调用 CreateGraph 之后,我在 RefreshGraph Sub 中尝试了 Me.Update() 仍然没有运气??
    • 你有没有在 RefreshGraph 方法里面放一个断点,并检查该方法是否被调用?
    • 是的,并且我一直遵循 CreateGraph 方法以确保正在加载新数据。我什至在之后放了一个小 MsgBox,它会像它应该的那样弹出......
    • 好的,刚刚想通了。这是我第一次使用 Dockpanel Suite,必须在 Dockpanel 控件上调用刷新方法才能刷新其内容。再次感谢你的帮助。我已经相应地更新了上述代码中的 RefreshGraph Sub。
    • 没有CreateGraph的代码很难说。您是否在 CreateGraph 方法中调用了 zedGraphControl1.Invalidate()zedGraphControl1.Refresh()
    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2012-05-18
    相关资源
    最近更新 更多