Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Honzs Sedlomn:11.11.2014 23:05

Zdravím. Jsem v C# nováček, ale něco už umím. Zrovna dělám jednu "aplikaci", ale zdá se mi, že kod je zbytečné dlouhý a složitý. Našel bys se někdo kdo by mi pomohl a poradil jak co zkrátit a zpřehlednit? Děkuju

 
Odpovědět
11.11.2014 23:05
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Honzs Sedlomn
Jan Vargovský:11.11.2014 23:35

To pošli sem, když to nechceš veřejně tak PM.

 
Nahoru Odpovědět
11.11.2014 23:35
Avatar
Odpovídá na Jan Vargovský
Honzs Sedlomn:12.11.2014 7:14
namespace Dopňovací_cvičení
{
    public partial class Form1 : Form
    {
        string spravne = "správně";
        string spatně = "špatně";
        public Form1()
        {
            InitializeComponent();
            comboBox1.Items.Add("P");
            comboBox1.Items.Add("p");
            comboBox2.Items.Add("V");
            comboBox2.Items.Add("v");

            //skore

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        // COMBOBOXY
        private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem == "P")
            {
                comboBox1.BackColor = Color.FromArgb(0, 255, 0);
                comboBox1.Enabled = false;
                label2.Text = spravne;
                label2.ForeColor = Color.FromArgb(0, 255, 0);

            }
            else if (comboBox1.SelectedItem == "p")
            {
                comboBox1.BackColor = Color.FromArgb(255, 0, 0);
                comboBox1.Enabled = false;
                label2.Text = spatně;
                label2.ForeColor = Color.FromArgb(255, 0, 0);
            }
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox2.SelectedItem == "V")
            {
                comboBox2.BackColor = Color.FromArgb(0, 255, 0);
                comboBox2.Enabled = false;
                label3.Text = spravne;
                label3.ForeColor = Color.FromArgb(0, 255, 0);
            }
            else if (comboBox2.SelectedItem == "v")
            {
                comboBox2.BackColor = Color.FromArgb(255, 0, 0);
                comboBox2.Enabled = false;
                label3.Text = spatně;
                label3.ForeColor = Color.FromArgb(255, 0, 0);
            }
        }
    }
}

Například se mi zdá chaotické ke každému comboboxu přídávat tu podmínku.. Chtěl bych aby se vždycky akorát změnilo číslo labelu a comboboxu. Je to vlastně jednoduchá aplikace kde je text a místo písmenka je combobox a uživatel má doplnit velké nebo malé písmeno :)

 
Nahoru Odpovědět
12.11.2014 7:14
Avatar
Odpovídá na Honzs Sedlomn
Luboš Běhounek Satik:12.11.2014 8:48
  • do názvů proměných bych nestrkal diakritiku
  • ty dva stringy bych udělal jako const, když je nikde v kódu neměníš
  • barvy jdou líp - Color.Red apod.
  • část kódu
comboBox2.BackColor = Color.FromArgb(255, 0, 0);
                 comboBox2.Enabled = false;
                 label3.Text = spatně;
                 label3.ForeColor = Color.FromArgb(255, 0, 0);

můžeš vrazit do funkce a pak používat jen tu funkci

  • pojmenovavej controly podle toho, k cemu slouzi, az jich tam budou desitky/stovky, tak kdyz potkas button100, tak budes muset hledat, co vlastne dela
Nahoru Odpovědět
12.11.2014 8:48
https://www.facebook.com/peasantsandcastles/
Avatar
sadlomaslox25:12.11.2014 9:44
public Form1()
{
    InitializeComponent();
    ...
    HandleCombobox(comboBox1, label2, "P");
    HandleCombobox(comboBox2, label3, "V");
}

private void HandleCombobox(ComboBox combobox, Label label, string goodAnswer)
{
    combobox.SelectedIndexChanged += (comb, e) =>
    {
        if (combobox.SelectedItem == goodAnswer)
        {
            combobox.BackColor = Color.FromArgb(0, 255, 0);
            combobox.Enabled = false;
            label.Text = spravne;
            label.ForeColor = Color.FromArgb(0, 255, 0);
        }
        else
        {
            combobox.BackColor = Color.FromArgb(255, 0, 0);
            combobox.Enabled = false;
            label.Text = spatne;
            label.ForeColor = Color.FromArgb(255, 0, 0);
        }
    };
}
 
Nahoru Odpovědět
12.11.2014 9:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.