继承类中的触发器方法 - 窗体

时间:2010-10-12 14:00:03

标签: winforms inheritance callback

这是我的情景,我想知道是否有可能完成我打算做的事情:

我有一个类库(用c#编写),里面有一个继承自System.Windows.Forms.Form的类(名为SForm)。在那个类中,我声明了一些字符串,以及设置这些字符串值的方法。

public class SForm : Form
{
  public string _myDate;
  public void setTime(string val) { _mydate = val; }
}

在另一个类中,我调用了一个触发回调的API,当发生回调时,调用方法来设置继承自Form的类中的值。一切正常,所有类都打包在DLL中。

public class Events
{
  private SForm _form;
  public void setForm(SForm f) 
  {
    _form = f;
  }
  public void connect()
  {
    //when I call this method, connects to a device using the API, and if
    //it's succesful, triggers OnCallback...
  }
  private void OnCallback(string retVal)
  {
    _form.setTime(retVal); //this works
  }
}

这是我的问题:我在VB中有一个使用该DLL的桌面应用程序,当我从SForm继承时,我希望DLL触发的回调调用我的表单中的方法

Public Class Form1
  Inherits SForm

  Private _se As Events

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles Me.Load
    _se = New Events()
    _se.setForm(Me)
    _se.connect()
  End Sub

  Private Overloads Sub setTime(ByVal s As String)
    MessageBox.Show(s)
  End Sub

我需要的是回调触发此表单中的“setTime”方法,并显示我的DLL发送的值(我可以按一个按钮并访问_myDate字符串的值,但我需要它是自动的)。那可能吗?如何??

万分感谢

1 个答案:

答案 0 :(得分:1)

您需要声明setTime()虚拟,以便覆盖它。不要忘记调用基本方法。