0
這是我的情況,我想知道是否有可能完成什麼我打算做:觸發方法 - Windows窗體
我有一個類庫(在C#中作出的)是內部有一個從System.Windows.Forms.Form繼承的類(名爲SForm)。在那個類中,我聲明瞭一些字符串以及設置這些字符串值的方法。
public class SForm : Form
{
public string _myDate;
public void setTime(string val) { _mydate = val; }
}
在另一類,我做出觸發回調的API了電話,當回調發生時,調用的方法中,從表繼承的類設置值。所有的工作都很好,所有的類都被封裝在一個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字符串的值,但我需要它自動)。那可能嗎?怎麼樣??
謝謝百萬
我不明白...我應該在哪裏調用基本方法?我需要的是,當API觸發OnCallback時,它會異步觸發VB窗體上的方法... – ditto1977 2010-10-12 14:35:49
您應該使用override方法調用它。爲什麼這必須是異步的?使用表單時非常棘手,只能在創建它們的同一個線程中觸摸控件。 – 2010-10-12 14:48:53
,因爲我不知道什麼時候OnCallback會被觸發......我只是真的很想知道什麼時候調用這個方法,所以我認爲讓OnCallback調用一個Form類的方法,會讓它「推」如果這個表格是繼承的... – ditto1977 2010-10-12 14:55:10