Выберите объект и отредактируйте в форме - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть класс некоторые объекты из класса.Теперь я хочу выбрать один из этих объектов и отобразить в моей форме.В то же время я хочу редактировать выбранный.Я использовал INotifyPropertyChanged и мог отображать выбранный объект.Но у меня есть некоторые проблемы.

1 - Когда я использую myDislayingObject = myObject1 Это не работает.Поэтому я должен использовать

myDislayingObject.property1 = myObject1.property1 
myDislayingObject.property2 = myObject1.property2

Я хочу скопировать свой объект со всеми свойствами с одним равенством, включая события и т. Д.

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

namespace DisplayObjectsInForm
{
    public partial class Form1 : Form
    {

        public Araba Araba1 = new Araba();
        public Araba Araba2 = new Araba();
        public Araba Araba3 = new Araba();

        public Araba DisplayingAraba = new Araba();

        public Form1()
        {
            InitializeComponent();

            Araba1.sName = "Araba1";
            Araba1.sColor = "Kirmizi";
            Araba1.nModel = 1999;

            Araba2.sName = "Araba2";
            Araba2.sColor = "Mavi";
            Araba2.nModel = 2005;

            Araba3.sName = "Araba3";
            Araba3.sColor = "Gri";
            Araba3.nModel = 2018;

            textBox1.DataBindings.Add("Text", DisplayingAraba, "sName");
            textBox2.DataBindings.Add("Text", DisplayingAraba, "sColor");
            textBox3.DataBindings.Add("Text", DisplayingAraba, "nModel");
        }

        public class Araba : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;

            private void NotifyPropertyChanged(string property)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(property));
                }
            }

            public string sNameInternal;
            public string sName
            {
                get
                {
                    return sNameInternal;
                }
                set
                {
                    if (sNameInternal != value)
                    {
                        sNameInternal = value;
                        NotifyPropertyChanged("sName");
                    }
                }
            }

            public string sColorInternal;
            public string sColor
            {
                get
                {
                    return sColorInternal;
                }
                set
                {
                    if (sColorInternal != value)
                    {
                        sColorInternal = value;
                        NotifyPropertyChanged("sColor");
                    }
                }
            }


            public int nModelInternal;
            public int nModel
            {
                get
                {
                    return nModelInternal;
                }
                set
                {
                    if (nModelInternal != value)
                    {
                        nModelInternal = value;
                        NotifyPropertyChanged("nModel");
                    }
                }
            }



        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch(comboBox1.SelectedIndex)
            {
                case 0:
                    {
                        DisplayingAraba.sName = Araba1.sName;
                        DisplayingAraba.sColor = Araba1.sColor;
                        DisplayingAraba.nModel = Araba1.nModel;
                        break;
                    }
                case 1:
                    {
                        DisplayingAraba.sName = Araba2.sName;
                        DisplayingAraba.sColor = Araba2.sColor;
                        DisplayingAraba.nModel = Araba2.nModel;
                        break;
                    }
                case 2:
                    {
                        //Not working
                        DisplayingAraba = Araba3;
                        break;
                    }
            }
        }
    }
}

1 Ответ

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

Это не будет работать, потому что вы изначально установили DisplayAraba на новый Araba. Попробуйте следующее

namespace DisplayObjectsInForm
 {
public partial class Form1 : Form
{

    public Araba Araba1 = new Araba();
    public Araba Araba2 = new Araba();
    public Araba Araba3 = new Araba();

    public Araba DisplayingAraba;//Remove the initialization from here. 

    public Form1()
    {
        InitializeComponent();
        DisplayingAraba = new Araba(); //Add this line here
        Araba1.sName = "Araba1";
        Araba1.sColor = "Kirmizi";
        Araba1.nModel = 1999;

        Araba2.sName = "Araba2";
        Araba2.sColor = "Mavi";
        Araba2.nModel = 2005;

        Araba3.sName = "Araba3";
        Araba3.sColor = "Gri";
        Araba3.nModel = 2018;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...