Como associar itens de um Hashtable a um ComboBox usando C#

Ao ler o outro post, um visitante do site me disse:

... será q tem como eu declarar um enum com os valores enum{Pendente, EmAndamento, Concluido} e eu querer exibir em meu combobox os valores {Pendente, Em Andamento, Concluído}. Observa-se que no meu enum não tem espaços e acentos, mas na forma q eu quero exibir tem.

A solução mais simples é não usar um enum e sim um Hashtable, como no exemplo abaixo:

using System;
using 
System.Drawing;
using 
System.Windows.Forms;

using 
System.Collections;

namespace 
HashtableComboBox
{
    
public partial class Form1 : Form
    {
        ComboBox cb 
= new ComboBox();

        public 
Form1()
        {
            InitializeComponent()
;
            this
.StartPosition =
                
FormStartPosition.CenterScreen;
        
}
        
private void Form1_Load(object sender, EventArgs e)
        {
            Hashtable ht 
= new Hashtable();

            
ht.Add("Pendente""Pendente");
            
ht.Add("EmAndamento""Em andamento");
            
ht.Add("Concluido""Concluído");

            
//36 = 10 da margem + 8 da borda (de cada lado)            
            
cb.Width = this.Width - 36;
            
cb.Location = new Point(1010);

            
cb.DataSource = new BindingSource(ht, null);
            
cb.DisplayMember "Value";
            
cb.ValueMember "Key";

            
cb.SelectedIndexChanged += new EventHandler(cb_SIC);

            this
.Controls.Add(cb);

            
cb.SelectedIndex -1;
            
cb.Text "(escolha uma opção)";
        
}

        
void cb_SIC(object sender, EventArgs e)
        {
            
if (cb.SelectedValue != null)
                MessageBox.Show(String.Format(
                    
"O valor de [{0}] é:\n\n{1}"
                        cb.Text, 
                        cb.SelectedValue.ToString()),
                    Application.ProductName,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information)
;
        
}
    }
}

Comentários (1) -

Gustavo Badke
Gustavo Badke
25/04/2010 18:26:48 #

Excelênte! Extremamente simples. Para efetuar essa solução final eu usava switch case, mas com certeza essa solução é melhor

Comentar

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading