MDIForm

18/07/2008 - 08:55 von André | Report spam
Hallo,
ist ein bisschen viel Text hoffe es kann mir trotzdem jemand einen Tip
geben.
Mich würde interessieren ob man das so umsetzt wie ich gleich beschreibe.

Ich habe ein MDIFORM mit einem RibbonControl von DevExpress und einem
Treeview.
Über das Treeview öffne ich diverse Childforms.
Ich habe eine frmForm Variabele definiert die je nach angeklickten
TreeviewItem das entsprechende Childform öffnet.
frmForm = new Form2 ();
frmForm.MdiParent= this;
frmForm.Show();

Sollte ein anderes Childform schon geöffnet sein wird es zuvor geschlossen.
if (frmForm != null)
{
if (frmForm.Name == "FORM2")
{
break;
}
frmForm.Close();
}

Über das Ribboncontrol der MDIForm möchte ich jetzt im Childform eine Method
ausführen.

private void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
frmForm.barButtonItem1_ItemClick(sender, e);
}

Da frmForm ja verschiedene Fenster beinhalten kann kann ich es nicht einfach
Casten (FORM2)frmForm... und FORM keine Method barButtonItem1_ItemClick()
hat kann ich den MDIMenüclick an das CHildForm nicht weiterleiten.

Deshalb habe ich mir eine abgeleitete Formklasse definiert und dort eine
virtual Method abgelegt.
Die Childforms sind alle von FormABC abgeleitet.

public class FormABC : Form
{
public virtual void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
MessageBox.Show("FormABC");
}
}

In der Childform habe ich diese Method hinzugefügt.

public override void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
MessageBox.Show("BarButtonClick");
}

Jetzt kann ich von dem MDIForm Ribboncontrol im Childform den
barButtonItem1_ItemClick() aufrufen.

So das war jetzt viel zu lesen aber mich würde brennend interessieren ob man
das so macht oder ob es einen einfacheren Weg oder besseren Weg gibt ?

Gruß

André












Das hier ist meine MDIFORM











public partial class Form1 : DevExpress.XtraBars.Ribbon.RibbonForm
{
FormABC frmForm;


private void treeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e)
{
switch (e.Node.Name)
{
case "Knoten0":
if (frmForm != null)
{
if (frmForm.Name == "FORM2")
{
break;
}
frmForm.Close();
}
frmForm = new Form2 ();
frmForm.MdiParent= this;
frmForm.Show();
break;

case "Knoten1":
if (frmForm != null)
{
if (frmForm.Name == "FORM3")
{
break;
}
frmForm.Close();
}
frmForm = new Form3();
frmForm.MdiParent = this;
frmForm.Show();
break;
}
}

private void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
frmForm.barButtonItem1_ItemClick(sender, e);
}

}











Meine abgeleitete Form Klasse










public class FormABC : Form
{
public virtual void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
MessageBox.Show("FormABC");
}
}











Das ist hier das Childform
<<<
public partial class Form2 : FormABC
{

public override void barButtonItem1_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
MessageBox.Show("BarButtonClick");
}
}
 

Lesen sie die antworten

#1 Andre
18/07/2008 - 10:09 | Warnen spam
"André" wrote:

Deshalb habe ich mir eine abgeleitete Formklasse definiert und dort eine
virtual Method abgelegt.
Die Childforms sind alle von FormABC abgeleitet.
...
...

Jetzt kann ich von dem MDIForm Ribboncontrol im Childform den
barButtonItem1_ItemClick() aufrufen.



Kann sein, dass es einen oder mehrere bessere Wege gibt, aber ich würde das
genau so machen, bzw. mache das stàndig auch so. Dafür sind ja
"spezialisierte" Klassen genau da.

Hoffe, das beruhigt dich.
Tschö!
Auch André

Ähnliche fragen