Per risolvere il problema dell'allineamento (Sinistra, Giustificato, Destra) si può intercettare l'evento DrawItem del controllo di tipo ListBox e ridefinire graficamente la stringa.
Una enumerazione per la gestione del DataSource della ComboBox
enum Allineamento
{
Giustificato,
Sinistra,
Destra
}
...
comboBox1.DataSource = Enum.GetValues(typeof(Allineamento));
Gestiamo il ridisegno delle stringhe intercettando DrawItem
// intercettiamo l'evento DrawItem
void ListBox1DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
SolidBrush sBrush;
string s;
StringFormat sFormat = new StringFormat();
// Scelta allineamento
switch(comboBox1.SelectedValue.ToString())
{
case "Sinistra":
sFormat.Alignment = StringAlignment.Near;
break;
case "Destra":
sFormat.Alignment = StringAlignment.Far;
break;
default:
sFormat.Alignment = StringAlignment.Center;
break;
}
try
{
s = listBox1.Items[e.Index].ToString();
}
catch (Exception ex)
{
s = "";
Trace.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace);
}
// definizione oggetto di tipo SolidBrush che
// utilizzeremo per disegnare la stringa
sBrush = new SolidBrush(Color.White);
g.FillRectangle(sBrush, e.Bounds);
if (e.State == DrawItemState.Selected)
g.FillRectangle(Brushes.LightBlue, e.Bounds);
g.DrawString(s, listBox1.Font, Brushes.Black, (RectangleF) e.Bounds, sFormat);
sBrush.Dispose();
}
Riferimenti
Esempio realizzato con C
Esempio realizzato con VB.NET
Nessun commento:
Posta un commento