Event eines Objekts einer exteren dll implementieren?
-
m_opcGroup.DataChange += new ...
Simon
-
hy simon.
das
m_opcGroup.DataChange += new System.EventHandler(this.m_opcGroup_DataChange);
soweit war ich, aber er kann this.m_opcGroup_DataChange nicht finden?
-
Du hast aber schon eine Methode die folgendermaßen aussieht oder?
protected void m_opcGroup_DataChange(object sender, EventArgs e) { /* Code */ }
Oder zumindest so ähnlich?
P.S.
Gewöhn dir doch mal die ungarische Notation ab. In C# sollte man folgende Notation verwenden: http://msdn.microsoft.com/en-us/library/ms229045.aspx
-
diese funktion bzw. event
protected void m_opcGroup_DataChange(object sender, EventArgs e) { /* Code */ }
hab ich nich, die hätte ich gerne:)
schau ich mir OPCServer im Objektexplorer an, hat dieses ein event DataChange.. mit so nem Blitzsymbol, das is tschonmal gut.. das will ich nun implementieren.. weis nich wie das in c# geht
-
BorisDieKlinge schrieb:
diese funktion bzw. event
protected void m_opcGroup_DataChange(object sender, EventArgs e) { /* Code */ }
hab ich nich, die hätte ich gerne:)
Dann schreib sie doch! Ist schließlich Dein Code.
-
Mach die Methode bei Dir im Code.
Fertig.Das ist die Methode die beim Callback aufgerufen wird.
Der Delegat ist der .NET Weg der Funktionszeiger (salop gesprochen).Simon
-
Oder Kurzum:
Lies Dich einfach mal in das Thema events ein. Es gibt viele Beispiele über Google zu finden und einiges an leicht zu verstehenden Text. Sei doch nicht ständig so faul und lass die arbeit durch andere erledigen.
-
PuppetMaster2k schrieb:
Du hast aber schon eine Methode die folgendermaßen aussieht oder?
protected void m_opcGroup_DataChange(object sender, EventArgs e) { /* Code */ }
Oder zumindest so ähnlich?
P.S.
Gewöhn dir doch mal die ungarische Notation ab. In C# sollte man folgende Notation verwenden: http://msdn.microsoft.com/en-us/library/ms229045.aspxWo bitte siehst du hier ungarische Notation???
Ich denke du leidest da etwas an Begriffsverwirrung.Und ob man sich das "m_" in C# abgewöhnen sollte nur weil MS denkt dass das so sein sollte... darüber kann man zumindest streiten.
-
ich komm nich dahinter:
namespace OPCAutomationWrapperTest { public partial class Form1 : Form { public OPCAutomation.OPCServer m_opcServer = null; public OPCAutomation.OPCGroup m_opcGroup = null; public Form1() { this.m_opcServer = new OPCAutomation.OPCServer(); this.m_opcServer.Connect("Softing.OPC.S7.DA", null); this.m_opcGroup = m_opcServer.OPCGroups.Add("TEST"); this.m_opcGroup.IsSubscribed = false; this.m_opcGroup.UpdateRate = 150; this.m_opcGroup.OPCItems.AddItem("DB406.DBW8", 1); this.m_opcGroup.IsSubscribed = true; //Hier event definieren this.m_opcGroup.DataChange += new System.EventHandler(this.m_opcGroup_OnDataChange); InitializeComponent(); } ~Form1() { this.m_opcServer.Disconnect(); m_opcServer = null; } private void button1_Click(object sender, EventArgs e) { } //Hier event rumpf , aber es kommt der fehler private void m_OpcGroup_OnDataChange(int dwTransid, int dwCount, int[] phClientItems, object[] pvValues, short[] pwQualities, object[] Date) { } } }
Fehler 10 "OPCAutomationWrapperTest.Form1" enthält keine Definition für "m_opcGroup_OnDataChange", und es konnte keine Erweiterungsmethode "m_opcGroup_OnDataChange" gefunden werden, die ein erstes Argument vom Typ "OPCAutomationWrapperTest.Form1" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Documents and Settings\Operator\My Documents\Visual Studio 2008\Projects\OPCAutomationWrapperTest\OPCAutomationWrapperTest\Form1.cs 28 72 OPCAutomationWrapperTest
naja kein plan^^
-
1. Schaue was DataChange für ein Delegat verlangt.
2. Schaue von diesem Delegat die Signatur an.
3. Erzeuge in Form1 eine Methode die zur Signatur des Delegaten passt.Der Fehler kann durch verschiedene Fehler erzeugt worden sein.
Hauptsächlich passen Delegat und Methodensig. nicht zusammen.Simon
-
BorisDiePflaume, m_opcGroup_OnDataChange ... m_OpcGroup_OnDataChange nu darfst du 0x raten was da wohl das Problem sein könnte.
-
hustbaer: Lach ein Kind nicht aus, welches bei seine ersten Schritten hinfällt!
this.m_opcGroup.DataChange += new OPCAutomation.DIOPCGroupEvent_DataChangeEventHandler(this.m_OpcGroup_OnDataChange);
Die lösung^^
Der Schlüssel zur weisheit:
http://www.csharp-station.com/Tutorials/Lesson14.aspx
ich weis, normal erst lesen dann posten;)
-
Übrigens, den ganzen
new BlablabalEventHandler
-Kram kannst (und solltest!) Du Dir sparen. C# kann den Delegate-Typ selbst herausfinden. Das spart nicht nur Code und Nerven, es macht das ganze auch leichter änderbar, falls sich der Delegate-Typ mal ändern sollte.Mit anderen Worten:
this.m_opcGroup.DataChange += this.m_OpcGroup_OnDataChange;
Reicht völlig aus, und zwar für *alle* Delegate-Typen.
-
@BorisDieKlinge:
Freund.
Die Fehlermeldung sagt (mit etwas anderen Worten): du hast dich vertippt, guck gefälligst nochmal wie das geschrieben gehört.
Wenn du dazu nicht fähig bist tut es mir leid.