2015-10-03 3 views
-1

Итак, я немного застрял над головой, когда я пытался запрограммировать что-то новое.C# - Невозможно преобразовать из пустоты в список

Я пытаюсь добавить objectBeer_pluche или objectBeer_Elektro моему OBJberenlijst на Берен Основной формой от деталей формы, так что я могу добавить оба экземпляра 2 классов в том же списке.

Я даже не уверен, что это возможно кстати. Итак, я хотел бы получить обратную связь, если то, что я пытаюсь сделать, можно начинать с. Я уже понял, что VOID не прав, но я действительно не знаю.

Это мой главный beren.cs формы с OBJberenlist, вот где я пытаюсь добавить objectBeer_pluche или objectBeer_Elektro в него:

public partial class Beren : Form 
    { 
    public interface Berenlijst { } 
    public List<Berenlijst> OBJberenLijst = new List<Berenlijst>(); 
    public Beren() 
    { 
     InitializeComponent(); 
    } 

    private void Beren_Load(object sender, EventArgs e) 
    { 

    } 

    private void BTNToevoegen_Click(object sender, EventArgs e) 
    { 
     this.Hide(); 
     Details Details = new Details(); 

     if (Details.ShowDialog(this) == DialogResult.OK) 
     { 
      OBJberenLijst.Add(Details.getdetails()); 
     } 
     Details.Close(); 
     Details.Dispose(); 
    } 

    public void LijstLaden() 
    { 
     foreach(Beer berenobject in OBJberenLijst) 
     { 
      LST_beren.Items.Add(berenobject.Naam); 
     } 
    } 
} 

}

от этого форма под названием details.cs

public partial class Details : Form 
{ 
    public Details() 
    { 
     InitializeComponent(); 
     BTN_toevoegen.DialogResult = DialogResult.OK; 
     BTN_cancel.DialogResult = DialogResult.Cancel; 
    } 

    private void Details_Load(object sender, EventArgs e) 
    { 
     RDB_pluche.Checked = true; 
     BTN_ok.Enabled = false; 
    } 

    private void RDB_pluche_CheckedChanged(object sender, EventArgs e) 
    { 
     PANEL_pluche.Visible = true; 
     PANEL_elektro.Visible = false; 
    } 

    private void RDB_elektro_CheckedChanged(object sender, EventArgs e) 
    { 
     PANEL_pluche.Visible = false; 
     PANEL_elektro.Visible = true; 
    } 

    private void BTN_toevoegen_Click(object sender, EventArgs e) 
    { 
     open_foto.Filter = "jpg (*.jpg)|*.jpg|bmp(*.bmp)|*.bmp|png(*.png)|*.png"; 
     if (open_foto.ShowDialog() == System.Windows.Forms.DialogResult.OK && open_foto.FileName.Length > 0) 
     { 
      TXT_adres.Text = open_foto.FileName; 
      PIC_beer.Image = Image.FromFile(open_foto.FileName); 
     } 

    } 

    private void BTN_ok_Click(object sender, EventArgs e) 
    { 


    } 
    public void getdetails() 
    { 
     if (RDB_pluche.Enabled == true) 
     { 
      Pluche_Beer objectBeer_pluche = new Pluche_Beer(TXTNaam_pluche.Text, open_foto.FileName, "(Wasprogramma: " + TXT_wasprogramma.ToString() + " Graden Celsius"); 

     } 
     else 
     { 
      Elektronische_Beer objectBeer_Elektro = new Elektronische_Beer(TXTNaam_elekro.Text, open_foto.FileName, "aantal Batterijen: " + CMBOBatterijen.ToString()); 

     } 

    } 


    private void Details_MouseMove(object sender, MouseEventArgs e) 
    { 

     foreach (Control c in this.Controls) 
     { 
      if (c is TextBox) 
      { 
       TextBox textBox = c as TextBox; 
       if (textBox.Text != string.Empty) 
       { 
        BTN_ok.Enabled = true; 
       } 
      } 
     } 
    } 
    } 
} 
+2

серьезный неупорядоченный вопрос! –

+0

Details.getDetails объявлен не возвращать ничего (void), поэтому компилятор не удовлетворен, когда вы пытаетесь добавить в свой список результат getDetails. Вы должны вернуть объект, созданный там, но также это может потерпеть неудачу, если у двух объектов не будет такого же базового класса Berenlijst – Steve

+0

, который я понял, я не знаю, как я мог бы попытаться преобразовать свой вопрос в более логичный, чтобы понять, Основной вопрос: как я могу добавить объект, созданный из класса в форме, в список в другой форме, если это поможет? –

ответ

1

Проблема заключается между этой линией ...

OBJberenLijst.Add (Details.getdetails());

... и этот линия.

общественных пустот getdetails()

List.Add() требует объект добавить, но getdetails() возвращает ничтожным. Вы, вероятно, хотите изменить getdetails() на что-то вроде следующего:

public Berenlijst getdetails() 
{ 
    if (RDB_pluche.Enabled == true) 
    { 
     return new Pluche_Beer(TXTNaam_pluche.Text, open_foto.FileName, "(Wasprogramma: " + TXT_wasprogramma.ToString() + " Graden Celsius"); 

    } 
     return new Elektronische_Beer(TXTNaam_elekro.Text, open_foto.FileName, "aantal Batterijen: " + CMBOBatterijen.ToString()); 

} 

Надеюсь Pluche_Beer и Elektronisch_Beer присущая от Berenlijst. В противном случае вам придется пересмотреть свою логику более широко.

+0

большое спасибо! Мне пришлось изменить его на 'public Beren.Berenlijst getdetails()', и он сделал именно то, как я это себе представлял, я еще не знаю, почему именно так должно было быть, но я обязательно буду изучать его :) –

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