For mange Classses i en Form
Hej,Jeg opretter en masse Class til at håndtere en masse grafer (mere end 20)
For at have fuld adgang til de Class i en WinForm bliver jeg nødt til at oprette instances af de forskellige Classer som Fields i en WinForm. Altså:
public partial class Form1 : Form
{
private GrafClassA graf1 = null;
private GrafClassB graf2 = null;
private GrafClassB graf3 = null;
private GrafClassB graf4 = null;
private GrafClassB graf5 = null;
osv...
Ovenståend ehar jeg brug for at kunne håndtere forskellige events, ændre i opsætningen af graferne osv...
Er der ikke en måde at undgå at oprette alle de Fields i Form1 instances... Rent programmeringsmæssigt er det ikke kønt.
Jeg har lavet et andet eksempel herunder. Problemet er "i en nøddeskal" eksemplificeret i "Button1Click" - jeg har brug for at instances af de 2 klasser er defineret som Fields for at kunne lave en "Button1Click":
public partial class Form1 : Form
{
private TestClass cmbBoxA = null;
private TestClass cmbBoxB = null;
public Form1()
{
InitializeComponent();
cmbBoxA = new TestClass(comboBox1);
cmbBoxA._lbl = label1;
cmbBoxB = new TestClass(comboBox2);
cmbBoxB._lbl = label2;
}
private void button1_Click(object sender, EventArgs e)
{
cmbBoxA.ShowMessage();
cmbBoxB.ShowMessage();
}
}
public class TestClass
{
private ComboBox _cmbBox { get; set; }
public Label _lbl { private get; set; }
public TestClass(ComboBox CmbBox)
{
CmbBox.Items.Clear();
CmbBox.Items.Add("Test 1");
CmbBox.Items.Add("Test 2");
CmbBox.Items.Add("Test 3");
CmbBox.Items.Add("Test 4");
CmbBox.Items.Add("Test 5");
this._cmbBox = CmbBox;
}
public void ShowMessage()
{
MessageBox.Show(this._cmbBox.Items[this._cmbBox.SelectedIndex].ToString()) ;
_lbl.Text = this._cmbBox.Items[this._cmbBox.SelectedIndex].ToString();
}
}
PS:
A) jeg er godt klar over at bare kunne definere en event i Form1 Constructor - bær over med mig ;-)
B) Jeg er også godt klar over at jeg bare kunne bruge ComboBox Objekt egenskab (altså: CmbBox.Items.Add(Objeckt Item) og bruge den til at håndtere problemet
C) Man kunne måske også bruge databinding men lad os antage at der ikke er adgang til databinding
En bekendt har nævnt muligheden for "Dependency Injection Container" men synes ikke rigtigt jeg kan gennemskue hvordan det kan løse problemet...??
Nogen ideer??