Заполнение ComboBox с помощью C #

Так просто. Обратите внимание, что вам нужно изменить outMail.Display на outMail.Display (True), и вы там, полный код:

...
...
...
outMail.Display (True)

On Error Resume Next
bSent = outMail.sent 'This will NOT SEND. Used to get error.
If Err <> 0 Then
    'Email was sent. Put followed actions here.
Else
    'Email was not sent. Put followed actions here.
End If
On Error GoTo 0

Плюсы:

  • Вы получаете то, что хотите
  • Это просто.

Минусы:

  • Excel (или любое другое время выполнения, с которого выполняется этот код) замерзает, пока вы не отмените или отправить электронную почту.
29
задан Jim Fell 10 June 2016 в 21:06
поделиться

10 ответов

Определите класс

public class Language
{
     public string Name { get; set; }
     public string Value { get; set; }
}

, затем ...

//Build a list
var dataSource = new List<Language>();
dataSource.Add(new Language() { Name = "blah", Value = "blah" });
dataSource.Add(new Language() { Name = "blah", Value = "blah" });
dataSource.Add(new Language() { Name = "blah", Value = "blah" });

//Setup data binding
this.comboBox1.DataSource = dataSource;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "Value";

// make it readonly
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
65
ответ дан Allen Rice 10 June 2016 в 21:06
поделиться

Задайте для свойств ValueMember / DisplayMember имя свойств ваших Language объектов.

class Language
{
    string text;
    string value;

    public string Text
    {
        get 
        {
            return text;
        }
    }

    public string Value
    {
        get
        {
            return value;
        }
    }

    public Language(string text, string value)
    {
        this.text = text;
        this.value = value;
    }
}

...

combo.DisplayMember= "Text";
combo.ValueMember = "Value";
combo.Items.Add(new Language("English", "en"));
5
ответ дан thelost 10 June 2016 в 21:06
поделиться

Создайте класс Language

public class Language
{
     public string Name{get;set;}
     public string Value{get;set;}
     public override string ToString() { return this.Name;}
}

Затем добавьте в комбинированный список столько языков, сколько хотите:

yourCombobox.Items.Add(new Language{Name="English",Value="En"});
17
ответ дан Gregoire 10 June 2016 в 21:06
поделиться

Если вы просто хотите добавить его, не создавая новый класс, попробуйте это:

// WPF
<ComboBox Name="language" Loaded="language_Loaded" /> 


// C# code
private void language_Loaded(object sender, RoutedEventArgs e)
{
    List<String> language= new List<string>();
    language.Add("English");
    language.Add("Spanish");
    language.Add("ect"); 
    this.chartReviewComboxBox.ItemsSource = language;
}

Я предлагаю файл XML со всеми вашими языками, который вы будете поддерживать, так что вам не нужно зависеть от c # Я бы определенно создал класс для языка, как предлагает вышеупомянутый программист.

1
ответ дан Dinah 10 June 2016 в 21:06
поделиться

Чтобы сделать его доступным только для чтения, от свойства DropDownStyle до DropDownStyle.DropDownList.

Чтобы заполнить ComboBox, вам понадобится объект типа Language или около того, содержащий оба объекта, например:

public class Language {
    public string Name { get; set; }
    public string Code { get; set; }
}

Затем вы можете привязать IList к свойству ComboBox.DataSource следующим образом:

IList<Language> languages = new List<Language>();
languages.Add(new Language("English", "en"));
languages.Add(new Language("French", "fr"));

ComboxBox.DataSource = languages;
ComboBox.DisplayMember = "Name";
ComboBox.ValueMember = "Code";

Это будет делать именно то, что вы ожидаете.

4
ответ дан Will Marcouiller 10 June 2016 в 21:06
поделиться

Нет необходимости использовать определенный класс Language,

Просто замените его на:

KeyValuePair<string,string>
1
ответ дан Aelios 10 June 2016 в 21:06
поделиться
  Language[] items = new Language[]{new Language("English", "En"),
                new Language("Italian", "It")};

            languagesCombo.ValueMember = "Alias";
            languagesCombo.DisplayMember = "FullName";
            languagesCombo.DataSource = items.ToList();

            languagesCombo.DropDownStyle = ComboBoxStyle.DropDownList;

 class Language
    {
        public string FullName { get; set; }
        public string Alias { get; set; }

        public Language(string fullName, string alias)
        {
            this.FullName = fullName;
            this.Alias = alias;
        }
    }

Делая ваш выпадающий список «только для чтения», я предполагаю, что вы хотите запретить пользователю вводить другие параметры, в отличие от полностью доступного только для чтения, когда пользователи не могут выбрать значение ??

Если вы хотите, чтобы он был полностью доступен только для чтения, вы можете установить для свойства enabled значение false.

3
ответ дан MarkB29 10 June 2016 в 21:06
поделиться

Простой способ это:

Dictionary<string, string> dict = new Dictionary<string, string>()
{
    {"English ","En" },
    {"Italian  ","It" },
    {"Spainish  ","Sp " }
};

combo.DataSource = new BindingSource(dict, null);
combo.DisplayMember = "Key";
combo.ValueMember = "Value";
2
ответ дан Tiago S 10 June 2016 в 21:06
поделиться

Что вы можете сделать, это создать новый класс, подобный примеру @ Gregoire, однако вы захотите переопределить метод ToString(), чтобы он правильно отображался в поле со списком, например

public class Language
{
    private string _name;
    private string _code;

    public Language(string name, string code)
    {
        _name = name;
        _code = code;
    }

    public string Name { get { return _name; }  }
    public string Code { get { return _code; } }
    public override void ToString()
    {
        return _name;
    }
}
2
ответ дан James 10 June 2016 в 21:06
поделиться

но разве вы не просто получаете свое имя поля со списком, а затем items.add("")?

Например,

Language.Items.Add("Italian");
Language.Items.Add("English");
Language.Items.Add("Spanish");

Надеюсь, это помогло: D

0
ответ дан Opal 10 June 2016 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: