Projekt - ComboBox

0

Cześć, jestem początkujący w programowaniu w C#, potrzebuję pomocy. Mam do zrealizowania taki projekt:
Wykonanie prostej aplikacji w formie okienka, gdzie w polach tekstowych wpisywać można wartości do rejestrów procesora (AX, BX, CX, DX) a następnie wybrać rodzaj rozkazu MOV na przykład MOV AX, CX, żeby było widać zawartość rejestru CX zostanie przepisana do AX. Intel 8086.

Niestety moja znajomość C# jest bardzo podstawowa, osoba która to wykonała miała taki kod, niestety gdy wpisuje go w VS wyskakują mi błędy. Czy ktoś jest w stanie mi pomóc, co tutaj jest źle i co poprawić?

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;

namespace Projekt_zaliczeniowy
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
            comboBox1.Enabled = false;
            comboBox2.SelectedIndex = 0;
            comboBoz3.SelectedIndex = 1;
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex == 0 && combobox3.SelectedIndex == 1)
                NumericUpDown2.Text = NumericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown1_ValueChanged.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown1_ValueChanged.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown1.Text;                                  //AX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;                               //BX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;                                //CX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;                                    //DX
        }



    }

}

Z góry dziękuję za pomoc.

1

No bo widzisz.
Pierwszy błąd jaki udało mi się zauważyć to zły tytuł wątku. Wchodząc tu wnioskowałem, że masz problem z ComboBoxem.

Drugi błąd to brak informacji na temat frameworka jakiego używasz, brak informacji na temat czy to jest projekt winforms, wfp czy inny.

Teraz mi się rzuca w oczy, że nie stosujesz poprawnego nazewnictwa komponentów, przez co osoby które chciałyby pomóc nie potrafią rozszyfrować co jest czym (i ty zapewne też nie).

Ponad to jeżeli napisałeś, że kompilacja wyrzuca błędy, napisz łaskawie jakie :)

0

@klubus: Tyś to z palca przepisywał? Masa błędów związanych ze złymi nazwami. Poprawiłem je na szybko

using System;
using System.Windows.Forms;

namespace Projekt_zaliczeniowy
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            comboBox1.SelectedIndex = 0;
            comboBox1.Enabled = false;
            comboBox2.SelectedIndex = 0;
            comboBox3.SelectedIndex = 1;
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown1.Text;                                  //AX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;                               //BX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;                                //CX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;                                    //DX
        }
    }
}

EDIT.
Tak jak kolega wyżej napisał, poprawiłbym nazewnictwo komponentów. Dla comboBox2 np. cbDX albo jakaś więcej mówiąca nazwa. Dla button, powinno byc btnClickMe itd.
EDIT2.
Jeśli w konstruktorze, albo gdzieś przed wywołaniem Form1_Load nie ustawisz DataSource dla comboBox to wywali błąd w tej metodzie

0

Cześć, przepraszam już wam wysyłam zdjęcia błędów.
Od razu z góry przepraszam, jestem bardzo początkujący w programowaniu i w nauce C# jestem dopiero na zrozumieniu programowania obiektowego i klas, a niestety muszę zrobić taki projekt. Tutaj zdjęcia z VS błędów:
screenshot-20200512111512.png

screenshot-20200512111437.png

Bardzo proszę o pomoc i dziękuje z góry.

0

Pewnie combobox1 nie istnieje bo go nie zadeklarowałeś/nie nazwałeś. Pokaż właściwości jakiegoś z tych comboboxów

1

A więc problem polega na tym, że dostałeś kod c#, a nie stworzyłeś tych comboboxów. Ich zwyczajnie nie ma lub nie nazwałeś ich poprawnie. W edytorze przeciągnij je na główne okno i nazwij. Obejrzyj dowolny poradnik winforms aby dowiedzieć się jak to zrobić

0

Okej super! Dziękuję bardzo, przepraszam, że dla Was to takie oczywiste, ale ja serio dopiero jestem na samym początku. Zniknęły mi wszystkie błędy, jednak przy próbie Rozpoczęcia pracy wyskakuje mi nieobsługiwany wyjątek.

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;

namespace Projekt_zaliczeniowy
{
    public partial class Form1 : Form
    {
        

        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            comboBox1.SelectedIndex = 0;   //domyślna wartość MOV w comboboxie1
            comboBox1.Enabled = false;     //wyłącza możliwość wyboru z listy
            comboBox2.SelectedIndex = 0;   //domyślna wartość comboboxa2 AX
            comboBox3.SelectedIndex = 1;   //domyślna wartość comboboxa3 AX
        }


        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown1.Text;                                         //AX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;                               //BX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;                                     //CX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;                                     //DX
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown3_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown4_ValueChanged(object sender, EventArgs e)
        {

        }
    }

}

screenshot-20200513111838.png

Da się coś z tym zrobić?
Pozdrawiam.

1

Selected Index wskazuje na wybrany element w comboboxie. Wartość -1 oznacza brak zaznaczonego elementu z kolekcji ItemsSource. Wartość 0 oznacza pierwszy element. Jeżeli w ItemsSource nie masz żadnych elementów jak chcesz wybrać pierwszy element?

0

W takim razie co powinienem był wpisać do ItemSource?

1

No właśnie nie wiem, to zależy od Ciebie 😁

0

Tak jak w treści tego jakże trudnego dla mnie zadania (pewnie dla wszystkich innych już nie XD) potrzebuję wpisać dowolne wartości do zmiennych AX, BX, CX, DX a potem móc jest zamienić używając polecenia MOV. Mogą to też być jakieś wartości losowe tu nie ma znaczenia. No i niestety wiele więcej nie wiem :(

1

Przeczytaj moją odpowiedź, która wyjaśnia wystąpienie wyjątku przy Selected Index. Następnie wygoogluj jaki to ma związek z ItemsSource, bo pofatygowałeś się chociaż sprawdzić co to jest i do czego służy prawda? Następnie zrób mortal kombat na klawiaturze aby uzupełnić ItemsSource według odpowiedzi którą sam sobie udzieliłeś

0

Okej po wielkich męczarniach coś mi się udało zrobić i w sumie już mam praktycznie wszystko, oprócz tego że nie chce mi przenieść tej liczby:
screenshot-20200514105350.png
Mam na myśli że nie chce przenieść z AX do BX. Podejrzewam, że jest to jakiś problem z numericUpDown, jednak no jestem zielony i nie wiem nawet czego sie złapać i co mógłbym tam wpisać.

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;

namespace Projekt_zaliczeniowy___Krystian_Kluba
{
    public partial class Form1 : Form
    {
        

        public Form1()
        {
            InitializeComponent();
            Load += new EventHandler(Form1_Load);
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            comboBox1.SelectedIndex = 0;   //domyślna wartość MOV w comboboxie1
            comboBox1.Enabled = false;     //wyłącza możliwość wyboru z listy
            comboBox2.SelectedIndex = 0;   //domyślna wartość comboboxa2 AX
            comboBox3.SelectedIndex = 0;   //domyślna wartość comboboxa3 AX
        }


        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown1.Text;
            if (comboBox2.SelectedIndex == 0 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown1.Text;                                         //AX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;                               //BX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;                                     //CX

            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 0)
                numericUpDown1.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 1)
                numericUpDown2.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 2)
                numericUpDown3.Text = numericUpDown2.Text;
            if (comboBox2.SelectedIndex == 1 && comboBox3.SelectedIndex == 3)
                numericUpDown4.Text = numericUpDown2.Text;                                     //DX
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {
            comboBox1.Items.Add("MOV");
            comboBox2.Items.Add("AX");
            comboBox2.Items.Add("BX");
            comboBox2.Items.Add("CX");
            comboBox2.Items.Add("DX");
            comboBox3.Items.Add("AX");
            comboBox3.Items.Add("BX");
            comboBox3.Items.Add("CX");
            comboBox3.Items.Add("DX");
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown3_ValueChanged(object sender, EventArgs e)
        {

        }

        private void numericUpDown4_ValueChanged(object sender, EventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
    }

}

1

A inne przenosi?

0

W ogóle nie przenosi żadnej

1

A stworzyłeś button w który trzeba kliknąć? Po kliknięciu musisz obsłużyć kliknięcie metodą button1click. Podsumowując tworzysz przycisk. Wchodzisz w jego zdarzenia i ustawiasz metodę która ma się wykonać po kliknięciu przycisku

0

Okej działa wszystko udalo się, dziękuję CI bardzo za pomoc!
Dzięki wielkie przyjacielu.

0

Jeszcze mały jeden problem, w jaki sposób ja mogę zapisać ten plik? Tak żebym mógł bez problemu uruchomić tę aplikację?

0

Co masz na myśli?

0

W sensie daje Zapisz i zapisuje mi plik jako Form.cs, gdy wyślę go komuś to po prostu otwiera sam kod C# w VS. Chciałbym móc jakoś wysłać komuś jakby tą aplikację, żeby po uruchomieniu programu pojawiało się to okno:
screenshot-20200515100913.png
Jest taka możliwość?

0

Kliknij prawym na projekt i kompiluj. W folderze gdzie masz projekt znajdź folder bin/release i tam masz exe swojego programu

0

Okej znalazłem, dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1