Хранение и доступ к значениям внутри списка - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть нижеприведенная Winform для игрового приложения, которое я разрабатываю:

My Winform

Что я хочу сделать, это ввести нужные значения в Beam Arcs иНастройки луча, выберите имя оружия в 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

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

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

Надеюсь, все это имело смысл.

1 Ответ

0 голосов
/ 09 февраля 2019

Вы объявили newBeamWeapon как локальную переменную в addBeamWeaponButton_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 - этостранный.Вы действительно хотите сохранить все эти значения в виде строки?Как вы хотите выполнить арифметику с этими значениями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...