2013-02-20 2 views
0

Я создаю форму для хранения информации из «встреч». Пользователь заполнит информацию относительно title, location, startTime, endTime, notes и date. В настоящее время я работаю над кнопкой «сохранить изменения», которая будет:C# meeting system

  1. очистить все текстовые поля.
  2. хранить входные данные в массиве.
  3. Показать только title в ListBox.
  4. При нажатии на название в ListBox информация, хранящаяся в этом элементе массива, повторно заполняется в соответствующих текстовых блоках, если пользователь хочет внести изменения.

Я завершил # 1, # 2 и # 3 Буду признателен за любую помощь за # 4. Я вставил кодировку ниже для вашего просмотра.

public partial class CalendarForm : Form 
{ 
    int currentIndex; 
    int arraySize = 0; 
    Meeting[] meetingArray = new Meeting[100]; 

    public CalendarForm() 
    { 
     InitializeComponent(); 
    } 

    private void saveChangesButton_Click(object sender, EventArgs e) 
    { 
     meetingArray[arraySize] = new Meeting(); 
     meetingArray[arraySize].title = textBoxTitle.Text; 
     meetingArray[arraySize].location = textBoxLocation.Text; 
     meetingArray[arraySize].startTime = textBoxStartTime.Text; 
     meetingArray[arraySize].endTime = textBoxEndTime.Text; 
     meetingArray[arraySize].notes = notesTextBox.Text; 
     currentIndex = arraySize; 
     arraySize++; 
     meetingListBox.Enabled = true; 
     textBoxTitle.Text = ""; 
     textBoxLocation.Text = ""; 
     textBoxStartTime.Text = ""; 
     textBoxEndTime.Text = ""; 
     notesTextBox.Text = ""; 

     *edit* added these two lines which now add the title to the listBox 
     meetingListBox.Items.Add(meetingArray[currentIndex].title); 
     Controls.Add(meetingListBox); 

    } 
} 

public class Meeting 
{ 
    public string title; 
    public string location; 
    public string startTime; 
    public string endTime; 
    public string notes; 
}; 
+4

Это не место, где люди на самом деле пишут код для вас, вам нужно показать *, что вы пробовали *, и если у вас есть какой-то конкретный вопрос/проблема, тогда вы получите положительные ответы. – AbZy

+0

вот что я пробовал: meetingListBox.Text = meetingArray [currentIndex].заглавие; – PrgmRNoob

+2

Хотя тег Homework теперь устарел, было бы уместно указать, является ли это домашним заданием. – Pete

ответ

0

Это, как я бы реорганизовать класс:

public partial class CalendarForm : Form 
{ 
    private List<Meeting> Meetings { get; set; } 

    public CalendarForm() 
    { 
    InitializeComponent(); 
    Meetings = new List<Meeting>(); 
    } 

    private void saveChangesButton_Click(object sender, EventArgs e) 
    {  
    try 
    {  
     Meeting meeting = CreateMeeting(); 
     Meetings.Add(meeting); 
     meetingListBox.Add(meeting); 
    } 
    catch 
    { 
     //Add proper error handling here 
    }    
    } 

    private Meeting CreateMeeting() 
    { 
    return new Meeting() 
    { 
     Title = textBoxTitle.Text, 
     Location = textBoxLocation.Text 
     StartTime = DateTime.Parse(textBoxStartTime.Text), 
     EndTime = DateTime.Parse(textBoxEndTime.Text), 
     Notes = notesTextBox.Text, 
    }; 
    } 
} 

//As Matt Burland answered already: 
private void meetingListBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Meeting meeting = meetingListBox.SelectedItem as Meeting; 
    if (meeting != null) 
    { 
    textBoxTitle.Text = meeting.Title; 
    //...etc for all your other text boxes. 
    } 
} 

public class Meeting 
{ 
    public string Title { get; set; } 
    public string Location { get; set; } 
    public DateTime StartTime { get; set; } 
    public DateTime EndTime { get; set; } 
    public string Notes { get; set; } 

    public override string ToString() 
    { 
    return Title; 
    } 
} 

Я сделал ряд изменений, в частности более переход от массива к списку < >. Списки более гибкие и обеспечивают лучшую функциональность. Если вам действительно не нужно использовать массивы, я бы держался подальше от них, чтобы лучше защищать от ошибок ошибок ошибок из-за ограничений типа.

Кроме того, я лично считаю, что даты должны храниться в формате структуры DateTime, но это опять же вопрос предпочтения. Обратите внимание, что было бы разумно дезинформировать/проверить входные данные (особенно даты), прежде чем назначать их в объект собрания.

Объект Meeting теперь имеет свойства вместо общедоступных полей. Свойства предпочтительны, если вы когда-либо захотите изменить, как что-то Get/Set.

Надеюсь, это поможет.

0

Я очень рекомендую вам посмотреть привязку данных и узнать, как сделать это правильно, но если вы хотите быстро и грязный раствор (хотя, в конце концов, вы увидите, что это намного больше работы), Я хотел бы сделать что-то вроде этого:

private void saveChangesButton_Click(object sender, EventArgs e) 
{ 
    Meeting m = new Meeting(); 
    m.title = textBoxTitle.Text; 
    m.location = textBoxLocation.Text; 
    m.startTime = textBoxStartTime.Text; 
    m.endTime = textBoxEndTime.Text; 
    m.notes = notesTextBox.Text; 
    meetingArray[arraySize] = m; 
    currentIndex = arraySize; 
    arraySize++; 
    meetingListBox.Enabled = true; 
    textBoxTitle.Text = ""; 
    textBoxLocation.Text = ""; 
    textBoxStartTime.Text = ""; 
    textBoxEndTime.Text = ""; 
    notesTextBox.Text = ""; 

    meetingListBox.Items.Add(m); 
    //Controls.Add(meetingListBox); // You don't need to keep adding the control every time! 


} 

Теперь в вашем Meeting классе, я бы переопределить ToString() просто вернуть титул. ListBox будет использовать метод ToString() того, что вы добавляете к нему по умолчанию.

Чтобы помочь с # 4, вы хотите, чтобы связать SelectedIndexChanged события, а затем использовать SelectedItem свойства, бросьте обратно к Meeting объекту (потому что он будет возвращать Object), а затем использовать его, чтобы заселить ваши различные текстовые поля ,

Что-то вроде:

private void meetingListBox_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    Meeting m = meetingListBox.SelectedItem as Meeting; 
    if (m != null) 
    { 
     textBoxTitle.Text = m.title; 
     //...etc for all your other text boxes. 
    } 
} 
+0

Мэтт ... спасибо кучу! ваше понимание и знания были очень полезны :) – PrgmRNoob