Так просто. Обратите внимание, что вам нужно изменить 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
Плюсы:
Минусы:
Определите класс
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;
Задайте для свойств 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"));
Создайте класс 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"});
Если вы просто хотите добавить его, не создавая новый класс, попробуйте это:
// 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 # Я бы определенно создал класс для языка, как предлагает вышеупомянутый программист.
Чтобы сделать его доступным только для чтения, от свойства 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";
Это будет делать именно то, что вы ожидаете.
Нет необходимости использовать определенный класс Language,
Просто замените его на:
KeyValuePair<string,string>
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.
Простой способ это:
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";
Что вы можете сделать, это создать новый класс, подобный примеру @ 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;
}
}
но разве вы не просто получаете свое имя поля со списком, а затем items.add("")
?
Например,
Language.Items.Add("Italian");
Language.Items.Add("English");
Language.Items.Add("Spanish");
Надеюсь, это помогло: D