Vb.net 处理事件-表单/控件未更新?

Vb.net 处理事件-表单/控件未更新?,vb.net,winforms,zedgraph,dockpanel-suite,Vb.net,Winforms,Zedgraph,Dockpanel Suite,首先,我不是全职使用winform开发,所以不要对我太苛刻 正如标题所描述的,我在引发和捕获事件后刷新窗体上的控件时遇到了一个问题 在“表格1”中,我有一个Dockpanel,正在创建两个新表格,如下所示: Public Sub New() InitializeComponent() dpGraph.DockLeftPortion = 225 dpGraph.BringToFront() Dim frmT As frmGraphTools = New frmG

首先,我不是全职使用winform开发,所以不要对我太苛刻

正如标题所描述的,我在引发和捕获事件后刷新窗体上的控件时遇到了一个问题

在“表格1”中,我有一个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类别中,我有以下子定义:

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

我在frmGraph表单上有一个ZedGraph控件,该控件应该在按frmGraphTools上的定义单击按钮时刷新/重画。一切似乎都在运行,frmGraph中的RefreshGraph子正在执行,新数据被推送到ZedGraph控件中,但该控件从不更新。要使frmGraph窗体或ZedGraph控件正确更新/刷新/重画,必须执行哪些操作?

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

 AddHandler frmT.UpdateGraph, AddressOf frmG.RefreshGraph
此外,编译器应标记此调用,因为您传递的是字符串而不是日期

 RaiseEvent UpdateGraph(dtpJobDate.Value.ToString())

可能您已经

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

 AddHandler frmT.UpdateGraph, AddressOf frmG.RefreshGraph
此外,编译器应标记此调用,因为您传递的是字符串而不是日期

 RaiseEvent UpdateGraph(dtpJobDate.Value.ToString())

可能你有

Steve,谢谢你的回复。我已经相应地更新了AddHandler。。哼!我盯着它看太久了。但是我的控件仍然没有更新?在调用CreateGraph之后,我在RefreshGraph子项中尝试了我的.Update(),但仍然没有成功??您是否在RefreshGraph方法中放置了一个断点并检查了该方法是否被调用?是的,并且我一直遵循CreateGraph方法以确保加载新数据。我甚至在后面放了一个小MsgBox,它会像应该的那样弹出…好吧,我想出来了。这是我第一次使用Dockpanel套件,为了刷新其内容,必须在Dockpanel控件上调用一个刷新方法。再次感谢您的帮助。我已经相应地更新了上面代码中的RefreshGraph子项。没有CreateGraph的代码很难说。您是否在CreateGraph方法中调用了
zedGraphControl1.Invalidate()
zedGraphControl1.Refresh()
?Steve,感谢您的回复。我已经相应地更新了AddHandler。。哼!我盯着它看太久了。但是我的控件仍然没有更新?在调用CreateGraph之后,我在RefreshGraph子项中尝试了我的.Update(),但仍然没有成功??您是否在RefreshGraph方法中放置了一个断点并检查了该方法是否被调用?是的,并且我一直遵循CreateGraph方法以确保加载新数据。我甚至在后面放了一个小MsgBox,它会像应该的那样弹出…好吧,我想出来了。这是我第一次使用Dockpanel套件,为了刷新其内容,必须在Dockpanel控件上调用一个刷新方法。再次感谢您的帮助。我已经相应地更新了上面代码中的RefreshGraph子项。没有CreateGraph的代码很难说。您是否在CreateGraph方法中调用了
zedGraphControl1.Invalidate()
zedGraphControl1.Refresh()