|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[C# / WinForms]Array
Ciao a tutti
Ho un controllo di tipo TableLayoutPanel (ma potrebbe essere un controllo qualunque...) composto da 7 colonne e 7 righe. Devo trovare una soluzione per fare in modo che, a runtime, su tale controllo vengano posizionati altri controlli (es. Button). Ovviamente, il tipo di soluzione che devo trovare è che se ho aggiunto un controllo in posizione (0, 0), il successivo mi venga aggiunto in posizione (0, 1) e così via fino ad esaurire le posizioni disponibili nella riga e passare alla riga successiva. Giusto per fare un esempio: Codice:
private void someBtn_Click(object sender, EventArgs e)
{
Button testButton = new Button();
testButton.Text = "Sono il primo";
mioTableLayoutControl.Controls.Add(testButton, 0, 0);
}
RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Se invece vuoi estendere questa funzionalità ad un container qualsiasi ( Form, Panel, ... ) la devi implementare tu, magari creando una Classe che eredita-da, e gestendo dimensioni del nuovo controllo in arrivo, ridimensionamento righe, colonne, ordine di inserimento, ecc... C'è parecchio da fare, ma dal momento che esiste già il TableLayoutPanel, creato proprio per queste "matrici di controlli" non ne vedrei il motivo...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Infatti... il primo Overload mi era proprio sfuggito !! Per ricavare poi la posizione del controllo ho usato il suo metodo: GetControlFromPosition(col, row). Avrei però una domanda da porti sperando nel tuo aiuto: I tipi di oggetti che devo aggiungere sono tutti Button. Ora, per ciascuno di essi, dovrei anche aggiungere a runtime un evento "click". In pratica: Codice:
Button touchButton = new Button();
touchButton.Text = listBox2.SelectedItem.ToString();
touchButton.Dock = DockStyle.Fill;
touchButton.FlatStyle = FlatStyle.Flat;
touchButton.FlatAppearance.BorderSize = 0;
touchButton.BackColor = Color.Green;
touchButton.Click += new EventHandler(blah);
tableKeyb.Controls.Add(touchButton);
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Al momento sto procedendo così:
Codice:
public class RuntimeButton : Button
{
public delegate void RuntimeButtonClickHandler(string action);
public event RuntimeButtonClickHandler ButtonClicked;
//alcune proprietà....
public RuntimeButton(string btnText)
{
this.Text = btnText;
this.ButtonClicked += new RuntimeButtonClickHandler(RuntimeButton_ButtonClicked);
}
void RuntimeButton_ButtonClicked(string action)
{
}
}
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
Ultima modifica di RaouL_BennetH : 26-07-2012 alle 09:28. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Quello che invece non mi è chiaro è il bisogno di creare anche una Delegate nel codice del post seguente. Per ora ti passo il link ad un mio Articolo Blog in cui faccio alcuni esempi interessanti sulla gestione di Matrici di Controlli in .NET. Il codice è VB.NET, ma non ti sarà difficile tradurlo velocemente in C# : http://marcoggblog.blogspot.it/2012/...-con-linq.html Poi magari vediamo di capire più precisamente il tuo scopo...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
In pratica devo realizzare una tastiera per un'applicazione che farà uso esclusivo di un touch screen. Al momento mi devo concentrare sui "pulsanti", in seguito, ciascuna di queste matrici dovrò memorizzarla in una "pagina"... Grazie per il momento
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:42.




















