wenig los bei meinen Fragen 
Aber nach einigen Wochen habe ich jetzt einen einigermaßen gangbaren Weg gefunden. Wäre toll, wenn sich noch was effizienteres finden lässt...
Also nochmal, wie umgeht ihr das Problem, dass man im AddIn Framework eigentlich keine Infos zum auslösenden Element erhält, weil das AddIn Skript meist per Funktion angestartet wird?
Ich bin jetzt den Weg über einen Service gegangen.
Als erstes checke ich mal alle Events ein.
Der Runtimeservice überwacht alle klassischen Eingaben z.B. LeftClick, RightClick, MoiseOver etc.
Code:
public void Start(IProject context, IBehavior behavior)
{
myProject = context;
myProject.ScreenCollection.ElementMouseOver += ScreenCollection_ElementMouseOver;
myProject.ScreenCollection.ElementLeftButtonUp += ScreenCollection_ElementLeftButtonUp;
myProject.ScreenCollection.ElementRightButtonUp += ScreenCollection_ElementRightButtonUp; ...
}
Wird eine dieser Aktionen ausgelöst stehen mir wie in VBA die Element Informationen zur Verfügung von dem Element auf dem die Aktion ausgelöst wurde.
Aufgrund von dem Elementnamen starte ich dann meine entsprechendes Skript (z.B. Trendansicht einer Temperatur) in einem eigenen Thread.
Code:
private void ScreenCollection_ElementLeftButtonUp(object sender, Scada.AddIn.Contracts.Screen.ElementLeftButtonUpEventArgs e)
{
Element = e.Element;
TreadContainer MyTread = new TreadContainer(myProject, Element);
//Event für Tempsensor Trendansicht###############################################################
if (Element.Name.Contains("TempSensor"))
{
Thread T1 = new Thread(MyTread.TempsensorTrend);
T1.Start();
}
//Event für sämtliche Trendansichten von Energieverbräuchen###############################################################
...
aktuell steht so alles untereinander die Events, die Skriptauswahl und dann die jeweilige Skripte selbst.
Wir auf die Dauer etwas unübersichtlich...