存储和访问一个列表框内部的价值观

问题描述 投票:0回答:1

我有以下的Winform的游戏应用,我发展:

My Winform

我想要做的就是进入下梁弧线和梁设置所需的值,选择武器名字在listBox1中然后打右箭头按钮来存储listBox2这些设置。我希望能够存储多种类型的武器,当我在listBox2他们之间单击,弧线和设置适当的值更新。

这是我当前的代码:

public class beamWeaponClass
{
    public string beamValue, beamActiveValue, beamArcsValue,
    beamBonusValue, beamCostValue, beamDamageValue, beamLoadValue,
    beamLockValue, beamNameValue, beamRangeValue, beamRecycleValue,
    listNameLabel;

    public override string ToString()
    {
        return listNameLabel;
    }
}

public void addBeamWeaponButton_Click(object sender, EventArgs e)
{
    beamWeaponClass newBeamWeapon = new beamWeaponClass();
    newBeamWeapon.beamValue = "0 0 1 1 " + addedBeamWeaponsList.Items.Count.ToString(); // Beam
    newBeamWeapon.beamActiveValue = "0"; // Beam Active
    newBeamWeapon.beamArcsValue = calculateArcs(); // Beam Arcs
    newBeamWeapon.beamBonusValue = beamBonus.Text; // Beam Bonus
    newBeamWeapon.beamCostValue = beamCost.Text; // Beam Cost
    newBeamWeapon.beamDamageValue = "1"; // Beam Damage
    newBeamWeapon.beamLoadValue = "0"; // Beam Load
    newBeamWeapon.beamLockValue = "0"; // Beam Lock
    newBeamWeapon.beamNameValue = beamWeaponList.GetItemText(beamWeaponList.SelectedItem); // Beam Name
    newBeamWeapon.beamRangeValue = beamRange.Text; // Beam Range
    newBeamWeapon.beamRecycleValue = beamRecycle.Text; // Beam Recycle
    newBeamWeapon.listNameLabel = beamWeaponList.GetItemText(beamWeaponList.SelectedItem);

    addedBeamWeaponsList.Items.Add(newBeamWeapon);
}

private void selectedBeamWeapons_SelectedIndexChanged(object sender, EventArgs e)
{
    //beamBonus.Text = newBeamWeapon.beamBonusValue;
    //beamCost.Text = newBeamWeapon.beamCost.Text;
    //beamRange.Text = newBeamWeapon.beamRange.Text; // Beam Range
    //beamRecycle.Text = newBeamWeapon.beamRecycle.Text;
}

private void removeBeamWeaponButton_Click(object sender, EventArgs e)
    {

    }

正如你所看到的,我试图用一个类来存储这些值,当我点击右箭头按钮。我已经然后一直试图看看这些值都被存储与selectedBeamWeapons_SelectedIndexChanged()方法,但我注释掉的代码,因为我得到The name 'newBeamWeapon' does not exist in the current context错误。按钮自身的工作原理,至少在一定程度上。从一个listBox1中发送值listBox2工作,我只是不知道如果这些值与下去。

My Winform after button click

右边的按钮是重新排序,并选择一个,修改其设置并保存。我现在这么多我并不担心,我想如果我可以钉存储和访问,然后改变应该是相当容易的。

我不知道如果我即使在正确的轨道上存储的值更别说访问它们。如果有人走了过来,我做了什么,让我知道我可以访问这些存储的设置,我真的很感激它。

我希望所有有意义。

c# winforms
1个回答
1
投票

你宣布newBeamWeaponaddBeamWeaponButton_Click局部变量。因此,它只能有可见。但在selectedBeamWeapons_SelectedIndexChanged,最好是用实际的选择,因为它可能通过另一个用户交互更改以及(当用户点击进入该列表)。

var beamWeapon = addedBeamWeaponsList.SelectedItem as beamWeaponClass;
if (beamWeapon != null) {
    beamBonus.Text = beamWeapon.beamBonusValue;
    beamCost.Text = beamWeapon.beamCost.Text;
    beamRange.Text = beamWeapon.beamRange.Text; // Beam Range
    beamRecycle.Text = beamWeapon.beamRecycle.Text;
}

beamWeaponClass很奇怪。你真的要存储所有这些值作为字符串?如何你想对那些值执行算术?

© www.soinside.com 2019 - 2024. All rights reserved.