2011-03-10 4 views
0

Вчера я задал этот вопрос: Get current time and set a value in a comboboxКак установить значение COMBOBOX

Теперь i'm имея другой вопрос, что мне приходится иметь дело с. В вопросе, что я спросил вчера у меня было три раза зоны в моем комбобоксе:

06:00 - 14:00 выпадающий получат значение TimeZone 1

14:01 - 22:00 выпадающий список получит значение TimeZone 2

22:01 - 05:59 выпадающий получит значение TIMEZONE 3

И я также есть datTimePicker были пользователь может выбрать дату. Предположим, что пользователь выбрал: 2011-02-02 и в выпадающем списке часовых поясов выберите TimeZone 2. Если это произойдет, я хочу создать метод, который будет искать только время. между 14:01 - 22:00 (TimeZone 2). И если пользователь выбирает TimeZone 3, он будет искать только время между 22:01 - 05:59.

Любые идеи?

+0

Что вы подразумеваете под «поиском времени»? –

+0

У меня есть база данных, в которой содержатся данные, и если пользователь выбирает TimeZone 1, например, программа будет искать заказы между: 06:00 - 14:00. –

+0

А в чем именно ваша проблема? Соединение с базой данных? Формулировка SQL-запроса? Использование EF, NHibernate или LINQ2SQL? Пожалуйста, постарайтесь быть более конкретными с вашими вопросами, мы не можем волшебно узнать, что вы хотите сделать! –

ответ

1

Вы можете создать класс держателя периода, содержащий тип, от и до времени. Это можно вставить в коллекцию, такую ​​как IList, которая может использоваться в качестве источника данных для вашего списка. Что-то вроде этого примера:

[Test] 
    public void CompositeDictionary() 
    { 

     //Create a dictionary of periods 
     IList<PeriodHolder> periodHolders = new List<PeriodHolder>(); 
     periodHolders.Add(new PeriodHolder("Type1", "06:00", "14:00")); 
     periodHolders.Add(new PeriodHolder("Type2", "14:01", "22:00")); 
     periodHolders.Add(new PeriodHolder("Type3", "22:01", "05:59")); 

     //Create the test combobox in a test form 
     Form testForm = new Form(); 
     ComboBox testComoBox = new ComboBox(); 
     testForm.Controls.Add(testComoBox); 

     testComoBox.DataSource = periodHolders; 
     testComoBox.ValueMember = "PeriodName"; //The name of the Name property in PeriodHolder 
     testComoBox.DisplayMember = "PeriodString"; //The name of the PeriodString property in PeriodHolder 
     testComoBox.SelectedIndex = 1; 


     string selectedType = testComoBox.ValueMember[testComoBox.SelectedIndex].ToString(); //Get the type so you can lookup in dictionary 


     foreach (PeriodHolder periodHolder in periodHolders) 
     { 
      if (periodHolder.PeriodName == selectedType) 
      { 
       //Use period holder for whatever you need 

       string fromTime = periodHolder.TimeFrom; //Extract fromTime from periodholder 
       string toTime = periodHolder.TimeTo;  //Extract toTime from periodholder 

       Console.WriteLine(periodHolder.PeriodString); 

       break; //you've found it -- Don't look anymore 
      } 
     } 



    } 

    public class PeriodHolder 
    { 
     public PeriodHolder(string name, string from, string to) 
     { 
      PeriodName= name; 
      TimeFrom =from; 
      TimeTo = to; 
     } 
     public string PeriodName { get; set; } 
     public string TimeFrom { get; set; } 
     public string TimeTo { get; set; } 

     public string PeriodString 
     { 
      get 
      { 
       return TimeFrom + " - " + TimeFrom; 
      } 
     } 
    } 
0

Создайте метод с 3 входными параметрами, такими как GetTime (DateTimePickerValue, TimeZone, SearchedTimeDate) и возвращаемое значение bool.

Способ оплаты TimeSpan для расчета времени и дат.

Смежные вопросы