Een optie zou kunnen zijn (er zijn vele wegen naar het oude Rome...)
Stel je hebt 2 dialogen (Dialoog1 en Dialoog2) allebei van de class Form (verder hier niet getoond). Dan zou je een centrale dialogclass kunnen maken:
Code: Selecteer alles
public class DialogClass : List<Form>
{
public DialogClass()
{
Add(new Dialoog1());
Add(new Dialoog2());
}
public string Open(int dialoog)
{
DialogResult result = this[dialoog].ShowDialog();
if (result == DialogResult.OK)
{
return "Het antwoord van de gevraagde dialoog";
}
return "niets";
}
}
Form1 zou er dan zo uit kunnen zien (slechts 1 button geplaatst)
Code: Selecteer alles
public partial class Form1 : Form
{
private DialogClass dialogs;
public Form1()
{
InitializeComponent();
dialogs = new DialogClass();
}
private void button1_Click(object sender, EventArgs e)
{
var antwoordvandialog1 = dialogs.Open(0);
var antwoordvandialog2 = dialogs.Open(1);
}
}
En nu even in gewoon Nederlands: De class DialogClass erft van List<Form>. M.a.w. Hij is een lijst met objecten van het type Form. In de constructor worden beide dialogen geinstantieerd en in de lijst geplaatst. (let op. deze lijst is zero-based)
de class heeft ook een method Open(...) waarmee de dialoog met het gevraagde nr wordt getoond. De method geeft eventueel gelijk de string terug van de dialoog. Het is maar hoe je dit wil afhandelen. Let er wel op dat er hier geen controles plaatsvinden dus het spulletje over de zeik krijgen is zo gedaan (bijv Open(2)).
in de button1_click van het form worden de dialogen direct achter elkaar geopend. Dit natuurlijk alleen ter lering en vermaak. Het geeft wellicht een idee van de mogelijkheden.
Maar nogmaals: Zo
zou het kunnen. Het kan natuurlijk op veel meer manieren.