Schnittstelle, Event, Delegate einbinden

18/11/2009 - 19:34 von Markus Fischer | Report spam
Hallo Michael,

herzlichen Dank.
Das passt.
Was ich jetzt machen möchte ist, wenn geschrieben wird, dass die Textbox
befüllt wird.
siehe hier - public override void Write(string data, int size)


Hier möchte ich in die Schnittstelle einen Event implementieren und bin
klàglich gescheitert.
Kannst Du mir hier nochmals helfen.
http://www1.minpic.de/bild_anzeigen.php?id”570&keyX293058&ende
Event
Eventhandler
delegate

Nach Möglichkeit 2 Varianten, dann sehe ich den Unterschied.

Logisches Modell

siehe unten

Danke.

Grüße Markus

private void btnTest_Click(object sender, EventArgs e)
{
IBussystems IBus = new BusDummy();
// // RS232
// // TCP/IP
IMES IMES = new MESDummy();
// // Text
// // XML

//BusDummy Bus = new BusDummy();
// RS232
// TCP/IP
//MESDummy MES = new MESDummy();
// Text
// XML

//BusDummy busdummy;
//busdummy = IBus as BusDummy;
//busdummy.EvContent += new
BusDummy.Content(busdummy_EvContent);
//IBus.EvHaContent += new EventHandler(IBus_EvHaContent);
IBus.EvHaContent +=new MyEventHandler(IBus_EvHaContent);
IMES.SetBusSystem(IBus);
IMES.SetCode("ID56342542536");
IMES.Send();
}

void IBus_EvHaContent(object sender, EventArgs e)
{
txtOutput.Text += e.NotifyMessage.ToString() +
Environment.NewLine;// "";

//throw new NotImplementedException();
}



public interface IMES
{
void SetBusSystem(IBussystems bussystem);
void SetCode(string content);
bool Send();
}

public delegate void MyEventHandler(Object sender, NotifyEventArgs e);
public interface IBussystems
{
event MyEventHandler EvHaContent;

void Read(string data, int size, int bytesRead);
void Write(string data, int size);
}

public class NotifyEventArgs : EventArgs
{
public NotifyEventArgs(string notifyText)
{
this.notifyMessage = notifyText;
}

string notifyMessage;
public string NotifyMessage
{
get { return notifyMessage; }
set { notifyMessage = value; }
}
}


public abstract class BaseMES : IMES
{
protected IBussystems Bussystem;

public virtual void SetBusSystem(IBussystems bussystem)
{
Bussystem = bussystem;
}

public virtual void SetCode(string content)
{
}

public virtual bool Send()
{
return true;
}
}

public abstract class BaseBussystems : IBussystems
{
public virtual void Read(string data, int size, int bytesRead)
{
}

public virtual void Write(string data, int size)
{
}

event MyEventHandler IBussystems.EvHaContent
{
add
{

}
remove
{

}
}
}


public class BusDummy : BaseBussystems
{
//public delegate void MyEventHandler(Object sender,
NotifyEventArgs e);
public override void Read(string data, int size, int bytesRead)
{
}

public override void Write(string data, int size)
{
for (int i = 0; i < size; i++)
System.Diagnostics.Trace.WriteLine(data[i]);

//if (EvHaContent != null)
//{
// EvHaContent(this, new NotifyEventArgs(data));
//}
}
}


public class MESDummy : BaseMES
{
string Code;
/// <summary>
/// Sets the code.
/// </summary>
/// <param name="content">The content.</param>
public override void SetCode(string content)
{
Code = content;
}
/// <summary>
/// Sends this instance.
/// </summary>
/// <returns></returns>
public override bool Send()
{
Bussystem.Write(Code, Code.Length);
return true;
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
19/11/2009 - 07:52 | Warnen spam
Hallo Markus,

Hier möchte ich in die Schnittstelle einen Event implementieren



[Gewusst wie: Implementieren von Schnittstellenereignissen (C#)]
http://msdn.microsoft.com/de-de/lib...w5846.aspx

[Gewusst wie: Auslösen von Basisklassenereignissen in abgeleiteten
Klassen (C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/lib...sefw3.aspx

[Implement events through interface in C#]
http://geekswithblogs.net/technetby...21110.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen