martedì 10 agosto 2010

Array di bottoni ?? eccolo...

Osservando le statistiche mi sono accorto che molti arrivano sul mio sito cercando "ARRAY di Bottoni"...

Ora posto che questo ricerca sia molto vicina a come creare un array di controlli, mi sembra carino pubblicare il seguente brano di codice che da qualche lume sull'argomento.

Anche se onestamente sconsiglio questa pratica.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

public class ButtonArrayController
{
Button[] _buttons = new Button[4];

public void CreateControlList()
{
_buttons = new Button[4];

_buttons[0] = new Button(); // create a new item
_buttons[0].Text = "New";
_buttons[0].Click += new EventHandler(ButtonArrayController_Click);

_buttons[1] = new Button(); // edit element (select to edit)
_buttons[1].Text = "Edit";
_buttons[1].Click += new EventHandler(ButtonArrayController_Click);

_buttons[2] = new Button(); // delete element (select to delete)
_buttons[2].Text = "Delete";
_buttons[2].Click += new EventHandler(ButtonArrayController_Click);

_buttons[3] = new Button(); // commit from new and edit
_buttons[3].Text = "Save";
_buttons[3].Click += new EventHandler(ButtonArrayController_Click);
}

public void SetStatus(int status)
{
for (int i = 0; i < 4; i++) { _buttons[0].Enabled = false; }

switch (status)
{
case 0: { _buttons[0].Enabled = true; break; } // init
case 1: { _buttons[1].Enabled = true; _buttons[2].Enabled = true; break; } // from grid click
case 2: { _buttons[3].Enabled = true; break; } // after case 0 or 1
}
}


public void ButtonArrayController_Click(object sender, EventArgs e)
{
// do action here..
}
}


Ad ogni modo un array di controlli in c# è un array e non quella strana situazione che creava VB6, tanto comoda quanto rischiosa.

2 commenti:

Anonimo ha detto...

Ritengo interessante l'idea di mettere dei controlli in un array, tuttavia come "dici tu" potrebbe essere frutto di una "analisi superficiale".

P.s. Ti sbircio un po' il blog ! che non mi sembra affatto male.
Complimenti.

Anonimo ha detto...

Quando da progettazione si aggiungono dei controlli su un form, questi fanno sempre parte di un array.
Per un utilizzo non ambiguo, comodo e funzionale è sufficiente, mettere i controlli in un contenitore.
Se mettiamo 4 Buttons in Panel1, li potremmo raggiungere con il loro indice, l'indice sarà determinato dalla disposizione nel designer.cs

I Buttons si possono modificare con:

Panel1.Controls[0].Text = "Bottone0";
Panel1.Controls[1].Text = "Bottone1";
Panel1.Controls[2].Text = "Bottone2";
Panel1.Controls[3].Text = "Bottone3";