【发布时间】:2015-10-03 19:20:38
【问题描述】:
所以,当我尝试编写新的东西时,我有点不知所措。
我正在尝试将 objectBeer_pluche 或 objectBeer_Elektro 添加到 Beren 主窗体上的 OBJberenlijst details 表单,因此我可以将 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;
}
}
}
}
}
}
【问题讨论】:
-
严重混乱的问题!
-
Details.getDetails 被声明为不返回任何内容 (void),因此当您尝试将 getDetails 的结果添加到列表时,编译器会不高兴。您应该返回在那里创建的对象,但如果两个对象没有相同的基类 Berenlijst,这也可能会失败
-
我想,我不知道如何尝试将我的问题转换为更合乎逻辑的问题来理解,核心问题是,如何将表单上的类创建的对象添加到在另一个表格上列出,这是否会更有帮助?