这是我的情景,我想知道是否有可能完成我打算做的事情:
我有一个类库(用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字符串的值,但我需要它是自动的)。那可能吗?如何??
万分感谢
答案 0 :(得分:1)
您需要声明setTime()虚拟,以便覆盖它。不要忘记调用基本方法。