почему я не могу добавить новый объект List в событие кнопки - PullRequest
0 голосов
/ 27 ноября 2018

почему я не могу добавить новый элемент / объект в мой список в событиях кнопки (или выпадающего списка и т. Д.)?Я имею в виду, что события не видят мой список, если он находится за скобками ... он подчеркнут красным цветом ... вы можете мне помочь?

Короче говоря: я хочу добавить новый объект с помощьюнажав на кнопку

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.IO;

namespace Samochody
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {


        List<Samochod> ListaSamochodow = new List<Samochod>();
            comboBox1.DataSource = ListaSamochodow;
            comboBox1.DisplayMember = "Marka";
            XmlRootAttribute oRootAttr = new XmlRootAttribute();
            XmlSerializer oSerializer = new XmlSerializer(typeof(List<Samochod>), oRootAttr);
            StreamWriter oStreamWriter = null;
            oStreamWriter = new StreamWriter("samochody.xml");
            oSerializer.Serialize(oStreamWriter, ListaSamochodow);
        }


        private void button1_Click(object sender, EventArgs e)
        {



            try
            {
                ListaSamochodow.Add(new Samochod(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text)));

            }
            catch (Exception oException)
            {
                Console.WriteLine("Aplikacja wygenerowała następujący wyjątek: " + oException.Message);
            }
        }

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Это, кажется, работает нормально.Вам может потребоваться установить в ваших текстовых полях допустимые значения при запуске формы.также убедитесь, что вы делаете список видимым во всем классе form1.

namespace Samochody
{
    public partial class Form1 : Form
    {

        // make sure your list looks like this, created outside your functions.
        List<Samochod> ListaSamochodow = new List<Samochod>();

        public Form1()
        {
            InitializeComponent();
            label1.Text = "the amount in your list is " + ListaSamochodow.Count.ToString();
            textBox1.Text = "string here";
            textBox2.Text = "string here";
            textBox3.Text = "100";
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            XmlRootAttribute oRootAttr = new XmlRootAttribute();
            XmlSerializer oSerializer = new XmlSerializer(typeof(List<Samochod>), oRootAttr);
            StreamWriter oStreamWriter = null;
            oStreamWriter = new StreamWriter("samochody.xml");
            oSerializer.Serialize(oStreamWriter, ListaSamochodow);
        }


        private void button1_Click_1(object sender, EventArgs e)
        {
            Samochod s = new Samochod(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text));
            ListaSamochodow.Add(s);
            label1.Text = "the amount in your list is " + ListaSamochodow.Count.ToString();

        }
    }
}
0 голосов
/ 27 ноября 2018

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

...