I mitt nuvarande project har jag en massa child. Så här nånting: Helt underbart, tack Jag använder då följande för att öppna för child: Så här kanske du kan göra:Om Form child
Genom att klicka på meny så kommer jag dit.
Vad jag funderar på är, hur kan jag göra en gemensam procedur och bara skicka med ett agrument(namnet på formen som skall öppnas)?
Idag öppnar jag varje child så här:
<code>
Form child = new Form4();
child.MdiParent = this;
child.Show();
</code>
Hur kan jag skriva en gemensam procedur?Sv: Om Form child
<code>
private void OpenForm(string formname)
{
System.Reflection.Assembly ass=System.Reflection.Assembly.GetExecutingAssembly();
Form child=(Form)ass.CreateInstance(formname);
child.MdiParent = this;
child.Show();
}
</code>
Ett alternativ skulle kunna vara:
<code>
private void OpenForm(string formname)
{
Form child=(Form)Activator.CreateInstance(Type.GetType(formname),false);
child.MdiParent = this;
child.Show();
}
</code>
Observera bara att formname måste vara hela klassnamnet plus namespacet.
Dvs. om du har följande struktur:
...
namespace saw
{
public class Form2:Form
...
}
så måste du skicka OpenForm("saw.Form2"); för att det skall fungeraSv: Om Form child
*************
JAg vore tacksam om du kikade på miin förfrågan: Binary read
Fortfarande olöst.Sv: Om Form child
<code>
private void OpenForm(string formname)
{
System.Reflection.Assembly ass=System.Reflection.Assembly.GetExecutingAssembly();
Form child=(Form)ass.CreateInstance(formname);
child.MdiParent = this;
child.Show();
}
</code>
Men detta betyder ju att andra child ligger bakom.
Hur kan jag göra de "visible=false" eller unloada dem?Sv: Om Form child
<code>
private void HideAllMdiChilds()
{
foreach (Form child in this.MdiChildren)
{
child.Visible=false;
}
}
</code>