我尝试将列表框项目添加到另一个类的列表框中。
所以这是主要的课程:
private void btnOpnemenLinks_Click(object sender, EventArgs e)
{
string bedragInCenten = tbEuroLinks.Text + tbCentenLinks.Text;
if(int.TryParse(tbEuroLinks.Text, out getal) && int.TryParse(tbCentenLinks.Text, out getal))
{
if (Convert.ToInt32(tbEuroLinks.Text) >= 0 && (Convert.ToInt32(tbCentenLinks.Text) >= 0))
{
bankrekeningLinks.NeemOp(Convert.ToInt32(bedragInCenten));
update();
string bedrag = returnBedragLinks();
}
else
MessageBox.Show("Negatieven getallen worden niet geaccepteerd.");
}
else
MessageBox.Show("Ongeldige invoer.");
所以,如果一切都是真的,它将转到:bankrekeningLinks.NeemOP(); - >
public void NeemOp(int bedrag)
{
// bedrag in hele centen, negatieve bedragen worden genegeerd.
// vul zelf in
if (bedrag <= saldo)
{
this.saldo = this.saldo - bedrag;
}
else
{
MessageBox.Show("Onvoldoende saldo.");
}
如果这也是真的,我想在我的列表框中添加一些内容:
if (bedrag <= saldo)
{
this.saldo = this.saldo - bedrag;
// ADD ITEM IN LIST BOX <---------
}
找到这样的事情:
http://www.dreamincode.net/forums/topic/60477-adding-items-to-a-listbox-from-a-class/
答案 0 :(得分:1)
我对你的设计并不完全确定,但似乎是:
您有一个GUI类,其中定义和定位控件。
然后有一个类,其中按钮点击事件是在(Program.cs类或可能是同一个类?)中订阅和处理的。
private void btnOpnemenLinks_Click(object sender, EventArgs e)
然后你有另一个类,NeemOp(int bedag)
被定义,bankrekeningLinks
是这个类的一个实例。
您想要更新NeemOp函数中的ListBox,但很可能是NeemOp函数所在的类对ListBox没有任何了解。这可以通过将ListBox作为参数传递给NeemOp函数来解决,如下所示:
public void NeemOp(int bedrag, ListBox listBox)
{
// bedrag in hele centen, negatieve bedragen worden genegeerd.
// vul zelf in
if (bedrag <= saldo)
{
this.saldo = this.saldo - bedrag;
listBox.Items.Add(saldo);
}
else
{
MessageBox.Show("Onvoldoende saldo.");
}
}
被叫:
bankrekeningLinks.NeemOp(Convert.ToInt32(bedragInCenten), listBox1);
然而,这个糟糕的设计因为新saldo的计算不应该真正关心GUI,它的工作就是计算。改变NeemOp以返回新的saldo将是正确的方向。
public int NeemOp(int bedrag)
{
// bedrag in hele centen, negatieve bedragen worden genegeerd.
// vul zelf in
if (bedrag <= saldo)
{
this.saldo = this.saldo - bedrag;
return this.saldo;
}
else
{
MessageBox.Show("Onvoldoende saldo.");
return this.saldo;
}
}
被叫:
var newSaldo = bankrekeningLinks.NeemOp(Convert.ToInt32(bedragInCenten));
listBox1.Items.Add(newSaldo);
update();
string bedrag = returnBedragLinks();
当然,您可能需要验证NeemOp是否成功,同时可能将所有GUI / MesageBoxes代码移动到与private void btnOpnemenLinks_Click(object sender, EventArgs e)
相同的类中,并将计算结果与NeemOp类隔离。有趣的运动。