Немного предыстории, это началось с вопроса: Пользовательский тип данных (структуры) против массивов .
Мне удалось создать struct State
, и List<State>
, чтобы согласиться с ним. Первоначально это был многомерный массив, цель которого состояла в том, чтобы 0-индекс был элементом в выпадающем списке, а идекс 1-3 затем отображался в 3 текстовых полях. Теперь у меня вопрос: как мне продублировать эту функцию, используя комбинацию struct / List? Структура содержит те же 4 поля, что и в оригинальном массиве Array, но у меня возникают проблемы с пониманием того, как указать, какое поле и в какое поле входит. Из того, что я читал в другом месте, это просто вопрос использования формата struct.field
, но, похоже, он не работает. Как обычно, это, наверное, что-то простое, что мне не хватает, но я не могу обернуться вокруг него.
* 1009. запись никогда не должна влиять на это).
Любая помощь будет принята с благодарностью.
Struct:
struct State
{
private String StateID;
private String TimeZone;
private String CureType;
private int CureTimeframe;
public State(string stateID, string timeZone, string cureType, int cureTimeframe)
{
StateID = stateID;
TimeZone = timeZone;
CureType = cureType;
CureTimeframe = cureTimeframe;
}
public override string ToString()
{
string data = String.Format("{0} {1} {2} {3}", StateID, TimeZone, CureType, CureTimeframe);
return data;
}
}
Список <> инициализатор:
class StatesAndTerritories
{
public List<State> stateData = new List<State>();
public StatesAndTerritories ()
{
stateData.Add(new State("AL", "CST", "None", 0));
stateData.Add(new State("AK", "AST", "COD", 10));
stateData.Add(new State("AR", "CST", "COD", 10));
stateData.Add(new State("AZ", "MST", "COD", 10));
stateData.Add(new State("CA", "PST", "COD/Mandatory", 10));
stateData.Add(new State("CO", "MST", "Mandatory", 20));
stateData.Add(new State("CT", "EST", "Mandatory", 10));
stateData.Add(new State("DC", "EST", "Mandatory", 10));
stateData.Add(new State("DE", "EST", "None", 0));
stateData.Add(new State("FL", "EST", "COD", 10));
stateData.Add(new State("GA", "EST", "COD", 10));
stateData.Add(new State("HI", "HST", "None", 0));
stateData.Add(new State("IA", "CST", "Mandatory", 20));
stateData.Add(new State("ID", "MST", "None", 0));
stateData.Add(new State("IL", "CST", "COD", 10));
stateData.Add(new State("IN", "EST", "None", 0));
stateData.Add(new State("KS", "CST", "Mandatory", 20));
stateData.Add(new State("KY", "EST", "None", 0));
stateData.Add(new State("LA", "CST", "Replevin", 0));
stateData.Add(new State("MA", "EST", "Mandatory", 21));
stateData.Add(new State("MD", "EST", "Mandatory", 10));
stateData.Add(new State("ME", "EST", "Mandatory", 19));
stateData.Add(new State("MI", "EST", "COD/Mandatory", 30));
stateData.Add(new State("MN", "CST", "COD", 10));
stateData.Add(new State("MO", "CST", "Mandatory", 20));
stateData.Add(new State("MS", "CST", "None", 0));
stateData.Add(new State("MT", "MST", "COD", 10));
stateData.Add(new State("NC", "EST", "None", 0));
stateData.Add(new State("ND", "CST", "None", 0));
stateData.Add(new State("NE", "CST", "Mandatory", 20));
stateData.Add(new State("NH", "EST", "None", 0));
stateData.Add(new State("NJ", "EST", "COD", 10));
stateData.Add(new State("NM", "MST", "COD", 10));
stateData.Add(new State("NV", "PST", "COD", 10));
stateData.Add(new State("NY", "EST", "None", 0));
stateData.Add(new State("OH", "EST", "COD", 10));
stateData.Add(new State("OK", "CST", "COD", 10));
stateData.Add(new State("OR", "PST", "COD", 10));
stateData.Add(new State("PA", "EST", "None", 0));
stateData.Add(new State("RI", "EST", "Mandatory", 24));
stateData.Add(new State("SC", "EST", "Mandatory", 20));
stateData.Add(new State("SD", "CST", "COD", 10));
stateData.Add(new State("TN", "CST", "COD", 10));
stateData.Add(new State("TX", "CST", "Mandatory",10));
stateData.Add(new State("UT", "MST", "None", 0));
stateData.Add(new State("VA", "EST", "None", 0));
stateData.Add(new State("VT", "EST", "None", 0));
stateData.Add(new State("WA", "PST", "COD", 10));
stateData.Add(new State("WI", "CST", "Mandatory", 15));
stateData.Add(new State("WV", "EST", "Mandatory", 10));
stateData.Add(new State("WY", "MST", "None", 0));
}
public IEnumerable<State> GetStates (){
return stateData;
}
public IEnumerable<State> GetStatesInTimeZone(string timezone)
{
return stateData;
}
public IEnumerable<State> GetStatesCureType(string curetype){
return stateData;
}
public IEnumerable<State> GetStatesCureTimeframe(int curetimeframe){
return stateData;
}
}
Combobox Население:
public void PopulateStateInfo()
{
StatesAndTerritories states = new StatesAndTerritories();
foreach (State state in states.stateData)
{
//string s = stateData[i, 0];
stateInfoBox.Items.Add(states.stateData);
}
}
Выбор ComboBox:
private void stateInfoBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
StatesAndTerritories states = new StatesAndTerritories();
try
{
stateTimeZone.Text = states.stateData.ToString();
stateCureType.Text = states.stateData.ToString();
stateCureTimeframe.Text = states.stateData.ToString();
if (stateCureTimeframe.Text != 0.ToString())
{
stateCureAtDPD.Text = ((55 - int.Parse(stateCureTimeframe.Text)).ToString());
}
}
catch (IndexOutOfRangeException)
{
stateTimeZone.Text = "";
stateCureType.Text = "";
stateCureTimeframe.Text = "";
stateCureAtDPD.Text = "";
}
}