28. juni 2005 - 10:57
Der er
7 kommentarer og 1 løsning
Sætte tag på items i CheckedListBox
Hej :) Jeg har et mindre problem med en CheckedListBox control. Jeg adder x antal items til denne CheckedListBox - men hvordan pokker for jeg sat et tag på hver enkelt item? Jeg troede jo nok naivt, at der fandtes en CheckListBoxItem - eller måske bare en ListBoxItem, som jeg kunne lave en instans af og sætte tag her på, men nej :) Så, hvordan er det så muligt?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
ikke verdens bedste C# haj, men smid lidt kode og jeg kan kigge på hvad du gør forkert....
Det er jo pointen... Hvad for noget kode :) Det der kun mulighed for at give et object som argument i .Item.Add(); Men her er hvordan jeg tilføjer et Item. customerGroup.Items.Add(group.SelectSingleNode("name").InnerText); Det jeg havde håbet, var at jeg kunne gøre noget i stil med: CheckedListBoxItem item = new CheckedListBoxItem(); item.Text = "Tester"; item.Tag = "En eller anden value"; customerGroup.Items.Add(item);
ohh, læste det som en anden list ting, tror ikke du kan det på CheckedListBox, så skal du nok have gang i ListView.... der ved jeg det er muligt men kræver list mere kode :-)
ListView listView1 = new ListView(); listView1.CheckBoxes = true; listView1.View = View.Details; listView1.Size = new System.Drawing.Size(220, 200); this.Controls.Add( listView1 ); ColumnHeader header = new ColumnHeader(); header.Text = "check list"; header.Width = 200; listView1.Columns.Add( header ); ListViewItem item = new ListViewItem("første ting"); item.Tag = "første tag"; listView1.Items.Add( item ); item = new ListViewItem("anden ting"); item.Tag = "anden tag"; listView1.Items.Add( item );
Bestemt ikke nogen dum idé. Det er godtaget faktisk :) Smid et svar!
using System; using System.Windows.Forms; namespace Nationalbanken.Common.CustomControls.ListBox { /// <summary> /// Summary description for Class1. /// </summary> public class CheckedListBoxEx : System.Windows.Forms.CheckedListBox { ListboxItemCollection m_listItemCollection = null; bool m_runtimeRefresh = false; public CheckedListBoxEx() { this.DisplayMember = "Name"; this.ValueMember = "ID"; this.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.CheckedListBoxEx_ItemCheck); } public void CheckSelectedItem() { if( this.SelectedIndex < 0 ) return; if( this.GetItemChecked(this.SelectedIndex) ) this.SetItemChecked(this.SelectedIndex,false); else this.SetItemChecked(this.SelectedIndex,true); } public void MoveSelectedItemUp() { if(this.SelectedIndex < 1) return; ListboxItem item = (ListboxItem)this.SelectedItem; if( item == null ) return; m_listItemCollection.Insert(this.SelectedIndex-1,item); m_listItemCollection.RemoveAt(this.SelectedIndex+1); this.SelectedIndex = this.SelectedIndex-1; RefreshList(); } public void MoveSelectedItemDown() { if(this.SelectedIndex >= this.Items.Count-1) return; ListboxItem item = (ListboxItem)this.SelectedItem; if( item == null ) return; m_listItemCollection.Insert(this.SelectedIndex+2,item); m_listItemCollection.RemoveAt(this.SelectedIndex); this.SelectedIndex = this.SelectedIndex+1; RefreshList(); } public void RefreshList() { BindingManagerBase bm = this.BindingContext[m_listItemCollection]; CurrencyManager cm = (CurrencyManager) bm; if (cm != null) { cm.Refresh(); refreshCheckBoxes(); } } void refreshCheckBoxes() { if( this.Items == null || this.Items.Count < 1) return; m_runtimeRefresh = true; if(m_listItemCollection == null) return; int i = 0; foreach(ListboxItem item in m_listItemCollection) { if(item.Checked) this.SetItemChecked(i,true); else this.SetItemChecked(i,false); i++; } m_runtimeRefresh = false; } private void InitializeComponent() { } private void CheckedListBoxEx_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e) { if(m_runtimeRefresh) return; ListboxItem item = m_listItemCollection[this.SelectedIndex]; if(CheckState.Checked == this.GetItemCheckState(this.SelectedIndex)) item.Checked = false; else item.Checked = true; } public void RemoveItem(int index) { m_listItemCollection.RemoveAt(index); RefreshList(); } public void AddItem(ListboxItem item) { m_listItemCollection.Add(item); RefreshList(); } public new ListboxItemCollection Items { get { if(m_listItemCollection == null) return new ListboxItemCollection(); else return m_listItemCollection; } } public new ListboxItemCollection DataSource { get { return m_listItemCollection; } set { m_listItemCollection = value; base.DataSource = m_listItemCollection; refreshCheckBoxes(); } } } } using System; namespace Nationalbanken.Common.CustomControls.ListBox { /// <summary> /// Summary description for IDName. /// </summary> public class ListboxItem { int m_ID = 0; private int m_ImageIndex = 1; string m_Name = string.Empty; bool m_checked = false; public int ID { get{ return m_ID; } set{ m_ID = value; } } public string Name { get{ return m_Name; } set{ m_Name = value; } } public bool Checked { set{ m_checked = value;} get{ return m_checked;} } public int ImageIndex { get {return m_ImageIndex;} set {m_ImageIndex = value;} } } } using System; using System.Collections; namespace Nationalbanken.Common.CustomControls.ListBox { /// <summary> /// Xxxx /// </summary> public class ListboxItemCollection : CollectionBase { public void Add(ListboxItem item) { List.Add(item); } public bool Contains(ListboxItem item) { return( List.Contains( item ) ); } public int IndexOf(ListboxItem item) { return( List.IndexOf( item ) ); } public void Insert(int index, ListboxItem item) { List.Insert(index, item ); } public ListboxItem this[ int index ] { get { return( (ListboxItem) List[index] ); } set { List[index] = value; } } public ListboxItemCollection Clone() { ListboxItemCollection clonedItems = new ListboxItemCollection(); foreach(ListboxItem item in this) { ListboxItem lItem = new ListboxItem(); lItem.Name = item.Name; lItem.ID = item.ID; lItem.Checked = item.Checked; lItem.ImageIndex = item.ImageIndex; clonedItems.Add(lItem); } return clonedItems; } } }
Har pastet en custom ListBox der kan lige de ting du søger. Som du kan se kommer det fra 3 filer, en listbox, en listboxitem og en listboxitemcollection.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.