2010-04-20 2 views
0
public static int iDeliverySelected = -1; 
    public static ArrayList myDeliveries = new ArrayList(); 

Я указываю эти два значения в верхней части страницы.Выберите в listview, чтобы передать индекс в другую форму.

элемент управления ListView заполняется следующим образом:

lstDeliveryDetails.Items.Clear(); 
     foreach (Delivery d in mainForm.myDeliveries) 
     { 
      ListViewItem item = lstDeliveryDetails.Items.Add(d.DeliveryName); 
      item.SubItems.Add(d.DeliveryAddress); 
      item.SubItems.Add(d.DeliveryDay); 
      item.SubItems.Add(d.DeliveryTime); 
      item.SubItems.Add(d.DeliveryMeal); 
      item.SubItems.Add(d.DeliveryInstructions); 
      item.SubItems.Add(d.DeliveryStatus); 
     } 

А потом, когда я хочу, чтобы выбрать один из них, я застрять. Моя идея в том, что я хочу выбрать значение, а затем нажмите кнопку «Изменить», которая перенесет меня в saveForm и позволит мне редактировать все значения, соответствующие выбранному индексу.

Я попытался следующие:

iDeliverySelected = lstDeliveryDetails.SelectedIndicies; 

iDeliverySelected = lstDeliveryDetails.SelectedIndex;

Они оба бросить следующее сообщение об ошибке:

«System.Windows.Forms.ListView» не содержит определение для «SelectedIndicies» и не метода расширения «SelectedIndicies» принимающего первый аргумент типа «системы. Windows.Forms.ListView '(вы не указали директиву или ссылку на сборку?)

Я буквально застрял и понятия не имею, что делать дальше! Я был бы очень признателен, если бы кто-то мог помочь!

+0

Windows Forms? WPF? ASP.NET? –

+0

Использование C# в приложении Windows Forms – sark9012

+0

Вы пропустили бы SelectedIndices, но см. Мой ответ ниже для другого способа сделать это. –

ответ

0

В вашем коде в вопросе после линии

ListViewItem item = lstDeliveryDetails.Items.Add(d.DeliveryName); 

Добавьте строку

item.tag = d; 

Затем сделать свой обработчик кнопки что-то вроде:

private void btnEdit_Click(System.Object sender, System.EventArgs e) 
{ 
    if (ListView1.SelectedItems.Count > 0) 
    { 
     saveForm frm = new saveForm((Delivery)ListView1.SelectedItems(0).Tag); 
     frm.Show(); 
    } 
} 

Сделать SaveForm содержат что-то вроде:

public class saveForm 
{ 
    private Delivery m_delivery; 
    public saveForm(Delivery d) 
    { 
        InitializeComponent(); 
        m_delivery = d; 
    } 
} 
0

Один из способов - пройти через пользовательский конструктор второй формы.

public Form2() 
{ 
} 

int index; 
public Form2(int index) 
{ 
    this.index = index; 
} 

// Code in Main Form 
Form2 f2 = new Form2(this.listView1.SelectedIndex); 
f2.ShowDialog(); 
+0

Итак, у меня есть mainForm и saveForm, я хочу выбрать в mainForm и найти способ получить это в saveForm. Какой код пойдет куда? – sark9012

+0

Нижние две строки идут в mainForm. Два лучших конструктора классов для Form2 будут saveForm. Переименуйте Form2 выше, чтобы сохранитьForm. – Inisheer

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