Hallo! danke schön an beide.
Ein Event, der durch die Serielle Schnittstelle ausgelöst wird, habe ich schon. Ich hatte es gemacht mit
C#-Quelltext
1:
| deviceComPort.DataReceived += this.copo_readDataFromSerialPort; |
da wird automatisch die Funktion "copo_readDataFromSerialPort()" ausgeführt.
Das Funktioniert auch ganz gut.
In der Treeview Klasse habe ich ebenfalls schon den Event AfterSelected überschrieben:
in der Funktion
public class myTreeView : TreeView
{
.....
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| protected override void OnAfterSelect(TreeViewEventArgs e) { Control currControl = e.Node.TreeView; TreeNode parentNode = null; TreeNode node = null;
if (!(e.Node is TreeNode)) return; else node = (TreeNode)e.Node; cfg_linkedForm = (deviceConfigForm)e.Node.TreeView.FindForm(); cfg_linkedForm.flpPolosConfig.dflp_clearFlp(); .... } |
Mein Problem ist nur, dass ich nicht weiß, von welcher Klasse der aufrufenden Formular ist, bzw. dass es verschiedene sein können. Die flowlayoutpanels und Listboxen dort haben verschiedene Namen.
Und ich dachte, dass es besser ist, wenn die Funktion AfterSelect der Klasse MyTreeview gar nichts vom aufrufenden Formular weiß, sondern nur dort ein Ereignis auslöst, dass der Formular selbst seine Controls verändert.
Sonst müsste ich ind er Klasse myTreeview Folgendes schreiben:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (cfg_linkedForm == Form1) cfg_linkedForm.Form1.dflp1_clearFlp(); else { if (cfg_linkedForm == Form1) cfg_linkedForm.Form2.flp2_clearFlp(); } |
und das ist wirklich nicht schön
Vielleicht hat jemand einen Tip, wie man es elegant löst
Danke schön