Avatar
hanisek.sedlon:

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ý
Redaktor
Avatar
Odpovídá na hanisek.sedlon
Jan Vargovský:

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ý
hanisek.sedlon:
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 hanisek.sedlon
Luboš Běhounek (Satik):
  • 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  +2 12.11.2014 8:48
:)
Avatar
sadlomaslox25:
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  -1 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.