ComboBox abilitata da checkbox interna

martedì 28 luglio 2009 - 18.11

demike Profilo | Newbie

Mi servirebbe creare una semplice combobox con integrata una checkbox: sul web ho trovato svariati esempi e codici ma per la selezione multipla con checkbox all'interno di una combo.
A me servirebbe semplicemente una combo con all'interno una checkbox che, quando è spuntata, abilita tale combo e quando è tolta la spunta disabilita. Anzi, sarebbe l'ideale che se a tale combo viene assegnato il valore NULL, automaticamente è disabilitata mentre quando le viene assegnata un altro qualunque valore sia abilitata. Un po' come il DateTimePicker: anzi identico al DateTimePicker ma... senza calendario :)

freeteo Profilo | Guru

Ciao,
non ho capito esattamente cosa intendi fare, perchè il comportamento che vuoi ottenere mi sembra un po' anomalo...nel senso che nel momento in cui tu disabiliti la combo in seguito al check di uno dei suoi elementi, come fai poi ad andare a cliccare di nuovo per abilitarla? se è disabilitata non è accessibile, quindi l'evento "click" non si scatenerebbe...

Secondo me ti conviene cambiare approccio, e lavorare con 2 controlli, una combo e una listBox (o listView) e gestire gli eventi in maniera separata...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

demike Profilo | Newbie

noooo... hai presente il DateTimePicker? Se al DateTimePicker gli abiliti lo ShowCheckBox, ottieni una combo con UN SOLO CheckBox, il quale quando viene selezionato abilita il DateTimePicker altrimenti lo disabilita.
Non voglio un CheckBox per ogni elemento, ma solo un unico CheckBox visibile già nella combo prima ancora di aprirla con la freccia...
Vedi l'immagine in allegato...


112x30 2Kb

demike Profilo | Newbie

per ora ho risolto in questo modo:
- creato un controllo utente "CustomDateTimePicker"
- trascinato una CheckBox, nominata "check"
- trascinato un DateTimePicker, nominato "data"

e questo il codice:

[System.ComponentModel.DefaultBindingProperty("Valore")] public partial class CustomDateTimePicker : UserControl { DateTime? _valore=null; public CustomDateTimePicker() { InitializeComponent(); check.Checked = false; data.Value = DateTime.Today; data.Enabled = false; } [Bindable(true)] public DateTime? Valore { set { if (value == null) { check.Checked = false; data.Value = DateTime.Today; data.Enabled = false; _valore = value; } else { check.Checked = true; data.Enabled = true; data.Value = (DateTime)value; _valore = value; } } get { return _valore; } } private void check_CheckedChanged(object sender, EventArgs e) { if (check.Checked) Valore = data.Value; else Valore = null; } private void data_ValueChanged(object sender, EventArgs e) { _valore = data.Value; } }

freeteo Profilo | Guru

Ok, pensavo fosse relativo al check di un elemento interno alla Combobox.
Secondo me il modo più veloce è farti uno UserControl tu, dove metti la combo e una checkbox sopra, e nell'evento "checked_changed" vai a settare l'Enabled della combo a seconda che la checkbox sia o meno fleggata.
Abbastanza banale, ed hai un comportamento del tutto analogo a quello del datepicker...secondo me fanno così anche loro quando attivi il check

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5