2016-07-04 5 views
1

Проблема: у меня есть 2 формы. В одной из них находится ListBox, а в другой форме - кнопка. Я хочу, чтобы элемент ListBox добавлялся, когда я запускаю кнопку во второй форме. Пробовал его с помощью следующего кода, расчет работает, но по какой-то причине он не добавляет элемент в ListBox.Невозможно добавить элемент ListBox из другой формы

Форма с ListBox:

public void addList(string sName) 
    { 
     listBox.Items.Add(sName + " " + Annuitätenrechner.zgErg.ToString("0.00") + "€" + " " + Annuitätenrechner.zmErg.ToString("0.00") + "€"); 
    } 

Форма с кнопкой:

public void bAdd_Click(object sender, RoutedEventArgs e) 
    { 
     string sMonate = monate2.Text; 
     string sZins = zins2.Text; 
     string sName = name2.Text; 

     if ((monate2.Text == "" && zins2.Text == "") || (sMonate.Contains('-')) || (sZins.Contains('-'))) 
     { 
      MessageBox.Show("Die eingegebenen Werte müssen größer als 0 sein."); 
     } 

     else 
     { 
      Daten data = new Daten(); 
      data.AnBetrag = int.Parse(betrag2.Text); 
      data.AnMonate = int.Parse(monate2.Text); 
      data.AnZins = double.Parse(zins2.Text)/100; 

      GlobaleDaten.AlleAnnuitaeten.Add(data); 

      Annuitätenrechner annuitätenrechner = new Annuitätenrechner(); 
      annuitätenrechner.AnRechner(data); 

      MainWindow mainwindow = new MainWindow(); 
      mainwindow.addList(sName); 
     } 
    } 

Не стесняйтесь спрашивать, если вам нужна дополнительная информация.

+2

'MainWindow MainWindow = новый MainWindow()' создает новый экземпляр вашего класса MainWindow. Вы, конечно же, хотите вызвать метод в существующем экземпляре. Вы можете получить его, например. по "var mainWindow = (MainWindow) Application.Current.MainWindow;'. Однако подумайте о создании класса модели представления, который совместно используется обоими окнами. – Clemens

+0

наилучшим подходом является делегат. –

+0

@ Clemens отлично работал, спасибо. :) –

ответ

1

Отправить ссылку на FormWithListBox в FormWithButton, образец:

public class FormWithListBox 
{ 
    private void openFormWithButton() 
    { 
     var formWithButton = new FormWithButton(this); 
     formWithButton.Show(); 
    } 

    public void addList(string sName) 
    { 
     listBox.Items.Add(...); 
    } 
} 

public class FormWithButton 
{ 
    private readonly FormWithListBox _form; 
    public FormWithButton(FormWithListBox form) 
    { 
     _form = form; 
    } 

    public void bAdd_Click(object sender, RoutedEventArgs e) 
    { 
     _form.addList("...BlaBlaBla..."); 
    } 
} 
Смежные вопросы