RaouL_BennetH
17-11-2008, 17:38
Ciao a tutti :)
Da un vecchio 3d sul quale mi aiutò gugoXX, stavo cercando di realizzare un menu riusabile per le applicazioni di tipo winforms.
Ora, senza entrare troppo in dettaglio sulla qualità del codice che vi posterò, mi trovo difronte ad una difficoltà.
Essenzialmente questo menu può avere due stati:
1) Gli items presenti sono predisposti per l'inserimento
2) Gli items presenti sono predisposti per l'aggiornamento
Mi spiego:
1) L'utente apre il form e il menu si carica dandogli la possibilità di cliccare o soltanto su "nuovo" o soltanto su "esci".
2) L'utente ha fatto una ricerca su di un record e il form si è popolato con i dati di tale record quindi il comportamento del menu dovrebbe essere di disattivare gli items "nuovo" ed "esci" ed attivargli l'item "modifica".
il codice del menu è questo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace ProvaMenu
{
public partial class SimpleToolStrip : UserControl
{
public SimpleToolStrip()
{
InitializeComponent();
}
public virtual ToolStripItemCollection Items
{
get
{
return toolStrip1.Items;
}
}
public delegate void OnNewActionHandler();
public delegate void OnSaveActionHandler();
public delegate void OnCancelActionHandler();
public delegate void OnUpdateActionHandler();
public delegate void OnCloseActionHandler();
public delegate void OnDeleteActionHandler();
public event OnNewActionHandler OnNewAction;
public event OnSaveActionHandler OnSaveAction;
public event OnCancelActionHandler OnCancelAction;
public event OnUpdateActionHandler OnUpdateAction;
public event OnCloseActionHandler OnClose;
public event OnDeleteActionHandler OnDeleteAction;
private void NewClicked()
{
toolStrip1.Items[0].Enabled = false;
toolStrip1.Items[2].Enabled = true;
toolStrip1.Items[4].Enabled = true;
toolStrip1.Items[6].Enabled = false;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = false;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = false;
}
private void MenuLoad(bool stato)
{
switch (stato)
{
case false:
toolStrip1.Items[0].Enabled = true;
toolStrip1.Items[2].Enabled = false;
toolStrip1.Items[4].Enabled = false;
toolStrip1.Items[6].Enabled = false;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = false;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = true;
break;
case true:
toolStrip1.Items[0].Enabled = false;
toolStrip1.Items[2].Enabled = false;
toolStrip1.Items[4].Enabled = false;
toolStrip1.Items[6].Enabled = true;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = true;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = true;
break;
default:
break;
}
}
private void tsNew_Click(object sender, EventArgs e)
{
OnNewAction();
NewClicked();
}
private void tsExit_Click(object sender, EventArgs e)
{
OnClose();
}
private void tsSave_Click(object sender, EventArgs e)
{
OnSaveAction();
}
private void tsCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Attenzione! Tutti i dati non salvati andranno persi!", "ANNULLAMENTO OPERAZIONE", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
OnCancelAction();
MenuLoad(false);
}
}
private void SimpleToolStrip_Load(object sender, EventArgs e)
{
MenuLoad(false);
}
private void tsElimina_Click(object sender, EventArgs e)
{
OnDeleteAction();
}
private void tsUpdate_Click(object sender, EventArgs e)
{
OnUpdateAction();
}
}
}
Ora, la domanda che faccio è:
Come faccio a passare al mio menu un ipotetico stato?
Grazie mille :)
RaouL.
Da un vecchio 3d sul quale mi aiutò gugoXX, stavo cercando di realizzare un menu riusabile per le applicazioni di tipo winforms.
Ora, senza entrare troppo in dettaglio sulla qualità del codice che vi posterò, mi trovo difronte ad una difficoltà.
Essenzialmente questo menu può avere due stati:
1) Gli items presenti sono predisposti per l'inserimento
2) Gli items presenti sono predisposti per l'aggiornamento
Mi spiego:
1) L'utente apre il form e il menu si carica dandogli la possibilità di cliccare o soltanto su "nuovo" o soltanto su "esci".
2) L'utente ha fatto una ricerca su di un record e il form si è popolato con i dati di tale record quindi il comportamento del menu dovrebbe essere di disattivare gli items "nuovo" ed "esci" ed attivargli l'item "modifica".
il codice del menu è questo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace ProvaMenu
{
public partial class SimpleToolStrip : UserControl
{
public SimpleToolStrip()
{
InitializeComponent();
}
public virtual ToolStripItemCollection Items
{
get
{
return toolStrip1.Items;
}
}
public delegate void OnNewActionHandler();
public delegate void OnSaveActionHandler();
public delegate void OnCancelActionHandler();
public delegate void OnUpdateActionHandler();
public delegate void OnCloseActionHandler();
public delegate void OnDeleteActionHandler();
public event OnNewActionHandler OnNewAction;
public event OnSaveActionHandler OnSaveAction;
public event OnCancelActionHandler OnCancelAction;
public event OnUpdateActionHandler OnUpdateAction;
public event OnCloseActionHandler OnClose;
public event OnDeleteActionHandler OnDeleteAction;
private void NewClicked()
{
toolStrip1.Items[0].Enabled = false;
toolStrip1.Items[2].Enabled = true;
toolStrip1.Items[4].Enabled = true;
toolStrip1.Items[6].Enabled = false;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = false;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = false;
}
private void MenuLoad(bool stato)
{
switch (stato)
{
case false:
toolStrip1.Items[0].Enabled = true;
toolStrip1.Items[2].Enabled = false;
toolStrip1.Items[4].Enabled = false;
toolStrip1.Items[6].Enabled = false;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = false;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = true;
break;
case true:
toolStrip1.Items[0].Enabled = false;
toolStrip1.Items[2].Enabled = false;
toolStrip1.Items[4].Enabled = false;
toolStrip1.Items[6].Enabled = true;
toolStrip1.Items[8].Enabled = false;
toolStrip1.Items[10].Enabled = true;
toolStrip1.Items[12].Enabled = false;
toolStrip1.Items[14].Enabled = true;
break;
default:
break;
}
}
private void tsNew_Click(object sender, EventArgs e)
{
OnNewAction();
NewClicked();
}
private void tsExit_Click(object sender, EventArgs e)
{
OnClose();
}
private void tsSave_Click(object sender, EventArgs e)
{
OnSaveAction();
}
private void tsCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Attenzione! Tutti i dati non salvati andranno persi!", "ANNULLAMENTO OPERAZIONE", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
OnCancelAction();
MenuLoad(false);
}
}
private void SimpleToolStrip_Load(object sender, EventArgs e)
{
MenuLoad(false);
}
private void tsElimina_Click(object sender, EventArgs e)
{
OnDeleteAction();
}
private void tsUpdate_Click(object sender, EventArgs e)
{
OnUpdateAction();
}
}
}
Ora, la domanda che faccio è:
Come faccio a passare al mio menu un ipotetico stato?
Grazie mille :)
RaouL.