下面的链接显示了为使用组合框而创建的类。
标准化美国各州阵列和国家/地区阵列
static class StateArray
{
static List<US_State> states;
static StateArray()
{
states = new List<US_State>(50);
states.Add(new US_State("AL", "Alabama"));
states.Add(new US_State("AK", "Alaska"));
states.Add(new US_State("AZ", "Arizona"));
states.Add(new US_State("AR", "Arkansas"));
states.Add(new US_State("CA", "California"));
states.Add(new US_State("CO", "Colorado"));
states.Add(new US_State("CT", "Connecticut"));
states.Add(new US_State("DE", "Delaware"));
states.Add(new US_State("DC", "District Of Columbia"));
states.Add(new US_State("FL", "Florida"));
states.Add(new US_State("GA", "Georgia"));
states.Add(new US_State("HI", "Hawaii"));
states.Add(new US_State("ID", "Idaho"));
states.Add(new US_State("IL", "Illinois"));
states.Add(new US_State("IN", "Indiana"));
states.Add(new US_State("IA", "Iowa"));
states.Add(new US_State("KS", "Kansas"));
states.Add(new US_State("KY", "Kentucky"));
states.Add(new US_State("LA", "Louisiana"));
states.Add(new US_State("ME", "Maine"));
states.Add(new US_State("MD", "Maryland"));
states.Add(new US_State("MA", "Massachusetts"));
states.Add(new US_State("MI", "Michigan"));
states.Add(new US_State("MN", "Minnesota"));
states.Add(new US_State("MS", "Mississippi"));
states.Add(new US_State("MO", "Missouri"));
states.Add(new US_State("MT", "Montana"));
states.Add(new US_State("NE", "Nebraska"));
states.Add(new US_State("NV", "Nevada"));
states.Add(new US_State("NH", "New Hampshire"));
states.Add(new US_State("NJ", "New Jersey"));
states.Add(new US_State("NM", "New Mexico"));
states.Add(new US_State("NY", "New York"));
states.Add(new US_State("NC", "North Carolina"));
states.Add(new US_State("ND", "North Dakota"));
states.Add(new US_State("OH", "Ohio"));
states.Add(new US_State("OK", "Oklahoma"));
states.Add(new US_State("OR", "Oregon"));
states.Add(new US_State("PA", "Pennsylvania"));
states.Add(new US_State("RI", "Rhode Island"));
states.Add(new US_State("SC", "South Carolina"));
states.Add(new US_State("SD", "South Dakota"));
states.Add(new US_State("TN", "Tennessee"));
states.Add(new US_State("TX", "Texas"));
states.Add(new US_State("UT", "Utah"));
states.Add(new US_State("VT", "Vermont"));
states.Add(new US_State("VA", "Virginia"));
states.Add(new US_State("WA", "Washington"));
states.Add(new US_State("WV", "West Virginia"));
states.Add(new US_State("WI", "Wisconsin"));
states.Add(new US_State("WY", "Wyoming"));
}
public static string[] Abbreviations()
{
List<string> abbrevList = new List<string>(states.Count);
foreach (var state in states)
{
abbrevList.Add(state.Abbreviations);
}
return abbrevList.ToArray();
}
public static string[] Names()
{
List<string> nameList = new List<string>(states.Count);
foreach (var state in states)
{
nameList.Add(state.Name);
}
return nameList.ToArray();
}
public static US_State[] States()
{
return states.ToArray();
}
}
我从上面创建了一个名为USStates.cs的类,并将一个组合框拖到我的窗体上。这是一个WinForm应用程序。我不熟悉类以及如何引用它,以便我的组合框将填充美国各州......有人能帮忙吗?
这是我会在组合盒事件中输入的内容吗?
private void cbState_SelectedIndexChanged(object sender, EventArgs e)
{
//populate with US States from the USStates.cs class....
}
您可以通过以下方式使用静态类 StaticArray:
static class StateArray
{
static List<US_State> states;
static StateArray()
{
states = new List<US_State>(50);
states.Add(new US_State("AL", "Alabama"));
states.Add(new US_State("AK", "Alaska"));
states.Add(new US_State("AZ", "Arizona"));
states.Add(new US_State("AR", "Arkansas"));
states.Add(new US_State("CA", "California"));
states.Add(new US_State("CO", "Colorado"));
states.Add(new US_State("CT", "Connecticut"));
states.Add(new US_State("DE", "Delaware"));
states.Add(new US_State("DC", "District Of Columbia"));
states.Add(new US_State("FL", "Florida"));
states.Add(new US_State("GA", "Georgia"));
states.Add(new US_State("HI", "Hawaii"));
states.Add(new US_State("ID", "Idaho"));
states.Add(new US_State("IL", "Illinois"));
states.Add(new US_State("IN", "Indiana"));
states.Add(new US_State("IA", "Iowa"));
states.Add(new US_State("KS", "Kansas"));
states.Add(new US_State("KY", "Kentucky"));
states.Add(new US_State("LA", "Louisiana"));
states.Add(new US_State("ME", "Maine"));
states.Add(new US_State("MD", "Maryland"));
states.Add(new US_State("MA", "Massachusetts"));
states.Add(new US_State("MI", "Michigan"));
states.Add(new US_State("MN", "Minnesota"));
states.Add(new US_State("MS", "Mississippi"));
states.Add(new US_State("MO", "Missouri"));
states.Add(new US_State("MT", "Montana"));
states.Add(new US_State("NE", "Nebraska"));
states.Add(new US_State("NV", "Nevada"));
states.Add(new US_State("NH", "New Hampshire"));
states.Add(new US_State("NJ", "New Jersey"));
states.Add(new US_State("NM", "New Mexico"));
states.Add(new US_State("NY", "New York"));
states.Add(new US_State("NC", "North Carolina"));
states.Add(new US_State("ND", "North Dakota"));
states.Add(new US_State("OH", "Ohio"));
states.Add(new US_State("OK", "Oklahoma"));
states.Add(new US_State("OR", "Oregon"));
states.Add(new US_State("PA", "Pennsylvania"));
states.Add(new US_State("RI", "Rhode Island"));
states.Add(new US_State("SC", "South Carolina"));
states.Add(new US_State("SD", "South Dakota"));
states.Add(new US_State("TN", "Tennessee"));
states.Add(new US_State("TX", "Texas"));
states.Add(new US_State("UT", "Utah"));
states.Add(new US_State("VT", "Vermont"));
states.Add(new US_State("VA", "Virginia"));
states.Add(new US_State("WA", "Washington"));
states.Add(new US_State("WV", "West Virginia"));
states.Add(new US_State("WI", "Wisconsin"));
states.Add(new US_State("WY", "Wyoming"));
}
public static List<US_State> States()
{
return states;
}
}
使用原始列表应该足以填充如下所示的 ComboBox 数据源:
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "Abbreviations";
this.comboBox1.DataSource = StateArray.States();
假设您的US_State类如下所示:
public class US_State
{
public string Name { get; set; }
public string Abbreviations { get; set; }
public US_State(string abbreviations, string name)
{
Abbreviations = abbreviations;
Name = name;
}
}
几种实用的方法可以通过将 ComboBox(或 DropDownList)绑定到各种数据结构来填充它,如文章中所述:将 ASP.NET DropDownList 绑定到数据结构 (http://www.codeproject.com/Tips/214418/Binding-DropDownList-to-various-data-structures)
根据您的情况,请考虑绑定到包含美国州缩写/州的字典对象,如以下代码片段所示;
// create sample dictionary object containing US StateAbbreviations/States
Dictionary<string,> dictStates = new Dictionary<string,>();
dictCountries.Add("AL", "Alabama");
dictCountries.Add("AK", "Alaska");
dictCountries.Add("AZ", "Arizona");
// the rest of the list
// Method 1a: Data Binding DropDownList `ddl2DictionaryDataBind` to Dictionary using DataSource and DataBind()
ddl2DictionaryDataBind.DataSource = dictStates;
ddl2DictionaryDataBind.DataTextField = "Value";
ddl2DictionaryDataBind.DataValueField = "Key";
ddl2DictionaryDataBind.DataBind();
ddl2DictionaryDataBind.ToolTip = "Data Bind to Dictionary using Value/Key";
// Method 1b. Data Binding DropDownList `ddl2DictionaryBindValues` to Dictionary (either Keys or Values)
// using DataSource property of the DropDownList object. This method will
// render the <select> HTML element with option values and inner HTML
// both corresponding to Dictionary Values (it could be bound to Keys instead)
// note: this method requires System.Linq reference
ddl2DictionaryBindValues.DataSource = dictStates.Values.ToArray();
ddl2DictionaryBindValues.DataBind();
ddl2DictionaryBindValues.ToolTip = "Data Bind to Dictionary using only Values";
// Method 1c. Data Binding DropDownList `ddl2DictionaryLoop` to Dictionary using iterations:
// looping through the dictionary items and adding them to the DropDownList
// this method will render the <select> HTML element with option values
// corresponding to Dictionary Keys and inner HTML corresponding to Values
// note: if Dictionary contains data types other than String (for example, Dictionary<int,>)
// then add the ToString() conversion to that data type
ddl2DictionaryLoop.ToolTip = "Bind to Dictionary (Key/Values) using iteration";
foreach (KeyValuePair<string,> _dictItem in dictStates)
{
ddl2DictionaryLoop.Items.Add(new ListItem(_dictItem.Value, _dictItem.Key));
}
希望这会有所帮助。此致敬意
这可能是您想要的代码,但是您一无所获,因此请阅读提供的链接,直到您对自己正在做的事情感到满意为止
将以下内容放在表单中的某个位置,它假设您实际上已经创建了您所指向的类
private void InitStates()
{
cbState.BeginUpdate();
foreach(var state in StateArray.Names)
{
cbState.Items.Add(state);
}
cbState.EndUpdate();
}
BeginUpdate
可以在这里阅读
foreach
可以在这里阅读
ComboBox.Items
可以在这里阅读
组合框一般可以在这里阅读,有很多很多例子
你可以像这样获得所有状态(使用 HtmlAgilityPack):
public void GetStates()
{
var wc = new WebClient {Proxy = null};
var webDoc = new HtmlAgilityPack.HtmlDocument();
webDoc.LoadHtml(wc.DownloadString("http://goo.gl/2R4ne1"));
foreach (var descendents in webDoc.DocumentNode.SelectNodes("//tr").Skip(1).Take(50)
.Select(i => i.Descendants("td").ToList()))
_allStates.Add(new State(descendents[0].InnerText, descendents[1].InnerText));
}
除此之外,您可以使用我编写的这段代码:
private readonly List<State> _allStates = new List<State>();
private void button1_Click(object sender, EventArgs e)
{
GetStates();
_allStates.ForEach(i => comboBox1.Items.Add(i.ToString()));
}
public void GetStates()
{
var wc = new WebClient {Proxy = null};
var webDoc = new HtmlAgilityPack.HtmlDocument();
webDoc.LoadHtml(wc.DownloadString("http://goo.gl/2R4ne1"));
foreach (var descendents in webDoc.DocumentNode.SelectNodes("//tr").Skip(1).Take(50)
.Select(i => i.Descendants("td").ToList()))
_allStates.Add(new State(descendents[0].InnerText, descendents[1].InnerText));
}
public class State
{
public State(string ab, string name)
{
Name = name;
Abbreviation = ab;
}
public string Abbreviation { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("{0} - {1}", Name, Abbreviation);
}
}
我得到了要在按钮单击事件上加载的值,但您可以放置
GetStates();
_allStates.ForEach(i => comboBox1.Items.Add(i.ToString()));
随心所欲