Java týden Java týden
Pouze tento týden sleva až 80 % na celý Java e-learning!
Brno? Vypsali jsme pro vás nové termíny školení OOP v Brně!

Jednoduchá C# kalkulačka v okně

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V tomto tutoriálu vytvoříme jednoduchou kalkulačku ve Windows Forms Application.

Jelikož je tento tutoriál pro nováčky, začneme se správným vytvořením nového projektu a nastavením věcí, které budeme potřebovat. Jdeme na to! Po spuštění Visual Studia klikneme na tlačítko vytvořit nový projekt, tam zvolíme Windows Forms Application a dole v okně zadáme název, jak by se měl projekt jmenovat a potvrdíme. Vytvoří se nám nový projekt. Dále v ilustračním obrázku je ukázáno, jak by to mělo vypadat.

Rozložení Visual studia

Kdyby Vám chyběl panel Toolbox, který se nachází vlevo na obrazovce, tak si ho můžete aktivovat nahoře v záložce View. Dále můžeme vidět, že vpravo nahoře v panelu Solution Explorer se nám vytvořila stromová architektura projektu. Dále velice často budeme používat panel Properties, kde jsou nastavení grafických prvků, které budeme přidávat do programu. Kdyby Vám též chyběl, tak si ho aktivujte v záložce View.

Začneme tím, že si vytvoříme vizuální stránku naší kalkulačky. Okno s designovou (vizuální) částí projektu vidíte uprostřed. Je tam už vytvořené prázdné pouzdro našeho programu. Po jednom kliknutí na toto pouzdro se nám zaktivuje panel Properties (vpravo dole), kde nastavujeme a upravujeme jeho vlastnosti. Ty vlastnosti tady nebudu vyjmenovávat, protože je jich poměrně dost, ale měli byste si je projet, abyste věděli, co všechno je možné nastavit. My využijeme jen nastavení Text: kalkulačka , Size: kde určíme rozměry našeho pouzdra a Name:kalkulacka.

Velice zdůrazňuji, že je důležité si pojmenovávat všechny vkládané prvky nějak rozumně. Poslouží to k lepší orientaci, která je v kódu nesmírně důležitá.

Dále do pouzdra přidáme z Toolboxu prvek Textbox, a jeho Name v Properties nastavíme na Name: zadaniTextBox. Také nezapomeneme nastavit Enabled: na False. Je to proto, abychom do toho okna nemohli vpisovat nějaký text. V tomhle kroku, kdo zná trochu ty prvky, může namítnou, proč nepoužijeme prvek Label. Samozřejmě i to je možnost, ale zvolil jsem variantu s Textboxem.

Samozřejmě každá kalkulačka musí obsahovat tlačítka. Ty přidáme obdobným způsobem jako Textbox, akorát tentokrát zvolíme prvek Button a každému nastavíme Text: podle tlačítka.

Ve finále by mohla vizuální stránka programu vypadat například takto:

Ukázka formuláře

Umístění prvků v pouzdře můžeme samozřejmě nastavit jednoduchým ovládáním pomoci myši. Stejně tak jako velikost a tvar (to však jde i v těch Properties jednotlivých prvků).

Teď přejdeme z vizuální stránky do kódové stránky. Uděláme to jednodušše tak, že dvakrát klikneme na naše pouzdro. Automaticky se nám otevře soubor: Form1.cs, kde se nám vytvořil počáteční kód.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class kalkulacka : Form
    {
        public kalkulacka()
        {
            InitializeComponent();
        }

        private void kalkulacka_Load(object sender, EventArgs e)
        {

        }


    }
}

Každý vložený prvek v pouzdře má svoji metodu. V metodě kalkulačka (což je právě to naše pouzdro) definujeme náš Textbox.

public kalkulacka()
{
    InitializeComponent();
    zadaniTextBox.Text = "0";
}

Znamená to, že když náš program se spustí, tak výchozí text v TextBoxu bude "0". Dále definujeme pár proměnných, s kterýma budeme v průběhu pracovat. Pozor!!! Tyto proměnné musí být vně z metody kalkulačka. Takže je jednodušše umístěte pod tělo metody.

int cislo1;
int cislo2;
string funkce;
int c = 0;

Budeme se přepínat mezi vizuální stránkou (dále jen vizuál) a kódovou stránkou (dále jen kód). Ve vizuální vždycky klikneme na prvek a tím se nám v kódu vytvoří automaticky metoda daného prvku.

Takže nyní se vrátíme do vizuálu, kde dvakrát klikneme na prvek: tlačítko 0, automaticky se nám vytvoří v kódu další metoda. Definujeme ji takto:

private void button0_Click(object sender, EventArgs e)
       {
           if (zadaniTextBox.Text != "0")
           {
               zadaniTextBox.Text = zadaniTextBox.Text + ((Button)sender).Text;
           }
           else
           {
               zadaniTextBox.Text = ((Button)sender).Text;
           }
       }

Jak funguje If a Else už jistě víte. Pokud ne, projeďte si předchozí tutoriál C# Kalkulačka v Console verzi. Co je zadání TextBox to víme také, to je prvek TextBox ve vizuálu. Lidsky: když text (obsah) prvku zadání TextBox se nebude rovnat "0", to znamená, že bude vypadat například "10", tak se k tomu textu (obsahu) přidá ((Button)sender)­.Text. To znamená, že se tam vloží Text tlačítka, které zmáčknete. A pokud obsah TextBoxu je "0", to znamená, že je ve výchozí pozici a tím pádem víme, že obsah je prázdný. Můžeme vložit první číslo.

Příklad: zapneme program (mimochodem program se spouští F5), tak uvidíme, že v TextBoxu je napsáno 0, tím pádem po zmáčknutí tlačíka s cifrou např. 5, nula se přepíše. Pokud zmáčkneme zase tlačítko 5, tak se to podívá na obsah TextBoxu a zjistí, že tam není nula, ale pětka a jenom přidá za ní další pětku. Tím pádem vidíme, že metoda pro tlačítko 0 se stává metodou pro každé tlačítko 0-9. (Určitě se ptáte, jak to, že tlačítka od 1-9 nevyužívají svoje metody? Je to jednoduché, protože jim bylo nastaveno ať využívají metodu tlačítka 0.)

Nastavení click události

Nastaví se to v Properties každého tlačítka (nahoře v tom panelu je malý blesk, po zmáčknutí se Vám objeví seznam, kde vyberete CLICK: kde vyberete jakou metodu má to tlačítko využívat).

Dále vyřešíme metody funkcí jako je (+, -, *, /). Jednodušše zase klikneme na tlačítka ve vizuálu a ono nám ty metody vytvoří samo.

private void plusButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "scitani";
}

private void minusButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "odcitani";
}

private void nasobeniButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "nasobeni";
}

private void deleniButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "deleni";
}

Každá metoda uloží do proměnné cislo1 obsah textboxu a poté ho resetuje, aby bylo možné zadat další číslo. Přitom přidá proměnné funkce nějakou hodnotu (sčítání/odčí­tání/násobení/dě­lení).

Znova doporučuji, abyste používali Name tlačítek a tudíž i metod, tak aby dávaly smysl.

private void rovnaseButton_Click(object sender, EventArgs e)
{
    cislo2 = int.Parse(zadaniTextBox.Text);

    if (funkce == "scitani")
    {
        c = cislo1 + cislo2;
    }
    else if (funkce == "odcitani")
    {
        c = cislo1 - cislo2;
    }
    else if (funkce == "nasobeni")
    {
        c = cislo1 * cislo2;
    }
    else if (funkce == "deleni")
    {
        c = cislo1 / cislo2;
    }

    zadaniTextBox.Text = c.ToString();
    funkce = "";
}

Metoda tlačítka "rovná se" zase přidává do proměnné cislo2 aktuální obsah TextBoxu. Dále rozpoznává podmínku o jakou funkci se jedná a následně provádí výpočty, které se ukládají do proměnné c. Poté je c vypisováno do TextBoxu (pro nás je to už výsledek příkladu).

Nesměji samozřejmě chybět metody, které budou zajišťovat tlačítka C a CE.

private void smazatVseButton_Click(object sender, EventArgs e)
{
    zadaniTextBox.Text = "0";
    funkce = "";
}

private void smazatButton_Click(object sender, EventArgs e)
{
    zadaniTextBox.Text = "0";
}

Metoda SmazatVse smaže celý příklad, zatímco metoda Smazat smaže jen aktuální obsah TextBoxu.

Celkový kód vypadá následovně:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace kalkulacka
{
    public partial class kalkulacka : Form
    {
        public kalkulacka()
        {
            InitializeComponent();
            zadaniTextBox.Text = "0";
        }

        int cislo1;
        int cislo2;
        string funkce;
        int c = 0;

        private void button0_Click(object sender, EventArgs e)
        {
            if (zadaniTextBox.Text != "0")
            {
                zadaniTextBox.Text = zadaniTextBox.Text + ((Button)sender).Text;
            }
            else
            {
                zadaniTextBox.Text = ((Button)sender).Text;
            }
        }

        private void plusButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "scitani";
        }

        private void minusButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "odcitani";
        }

        private void nasobeniButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "nasobeni";
        }

        private void deleniButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "deleni";
        }

        private void rovnaseButton_Click(object sender, EventArgs e)
        {
            cislo2 = int.Parse(zadaniTextBox.Text);

            if (funkce == "scitani")
            {
                c = cislo1 + cislo2;
            }
            else if (funkce == "odcitani")
            {
                c = cislo1 - cislo2;
            }
            else if (funkce == "nasobeni")
            {
                c = cislo1 * cislo2;
            }
            else if (funkce == "deleni")
            {
                c = cislo1 / cislo2;
            }

            zadaniTextBox.Text = c.ToString();
            funkce = "";
        }

        private void smazatVseButton_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";
            funkce = "";
        }

        private void smazatButton_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";
        }




    }
}

A to je vše :)


 

Stáhnout

Staženo 2804x (45.54 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Aktivity (1)

 

 

Komentáře

Avatar
Energy
Neregistrovaný
Avatar
Energy:5.2.2012 11:18

ahoj, když 2x kliknu na okno otevře se mi front.vs misto front.cs a myslim ze tam je napsane neco jineho poradite mi co jsem udelal za chybu?

 
Odpovědět 5.2.2012 11:18
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Energy
David Čápka:5.2.2012 12:30

Založil jste si místo C# projektu Visual Basic projekt.

Odpovědět  +1 5.2.2012 12:30
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Energy
Neregistrovaný
Avatar
Energy:5.2.2012 13:37

Diky :)

 
Odpovědět 5.2.2012 13:37
Avatar
Alias
Neregistrovaný
Avatar
Alias:5.2.2012 17:34

Dobry den, potřeboval bych zvětšit textbox když to delam přes properties přepišu hodnotu vrati se zpet (na 20) dekuji za odpoved

 
Odpovědět 5.2.2012 17:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Alias
David Čápka:5.2.2012 17:56

TextBox si určuje výšku podle fontu, zvětšete font a zvětší se i výška.

Odpovědět 5.2.2012 17:56
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
kamil.tichy
Člen
Avatar
kamil.tichy:6.7.2012 10:37

Dalo to zabrat, ale dal jsem to dohromady. Dobrý návod! ;)

 
Odpovědět 6.7.2012 10:37
Avatar
Зайчик
Člen
Avatar
Зайчик:18.10.2012 18:13

Čus, nevím jestli to tu už zaznělo, ale nevím proč tak máš C a CE buttony protože dělají úplně to samé, C smaže vše a CE smaže taky vše, :D mám za to že jedno z těch čudlíků by mělo mazat jen poslední číslo. Tedy mazat od zadu číslo po číslu.

Odpovědět 18.10.2012 18:13
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:18.10.2012 18:37

Nene, jedno maže celý příklad a jedno celé posledně zadané číslo.

Odpovědět 18.10.2012 18:37
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:18.10.2012 18:43

Ahá tak jsem to jen špatně pochopil, ale určitě by nebylo na škodu tam švihnout ten jeden čudlík na mazání čísel od zadu.

Odpovědět 18.10.2012 18:43
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:18.10.2012 18:44

No to je spíše indivindy - některé C maže celý poslední operand a ponechává operátor, jiné C maže jen poslední číslici (+ novější kalkulačky mají tlačítko DEL)... (CE asi maže vše úplně všude.)

 
Odpovědět 18.10.2012 18:44
Avatar

Člen
Avatar
:25.11.2012 11:44

David Čápka
Ahoj,
v programu jsi zapomněl ošetřit dělení nulou. Všichni víme, že dělit nulou NELZE!

 
Odpovědět 25.11.2012 11:44
Avatar
matesax
Redaktor
Avatar
Odpovídá na
matesax:25.11.2012 11:52

To víš jen ty - protože asi neznáš komplexní čísla - rozšířená o nekonečno...

 
Odpovědět  -6 25.11.2012 11:52
Avatar

Člen
Avatar
Odpovídá na matesax
:25.11.2012 12:29

To je sice pekne, ale samotne visual studio na me huláká, že musím ošetřit dělení nulou. Pro srovnání když v EXCELU máš v buňce B4 například 3 a v buňce B5 0 a napíšeš si do buňky B6 =B4/B5 tak ti to napíše

#DĚLENÍ_NULOU!

nebo

#DIV_0!

Takte z toho nám plyne že žádné číslo dělit nulou nejde...

Editováno 25.11.2012 12:31
 
Odpovědět 25.11.2012 12:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:26.11.2012 13:41

Komplexní čísla zavádějí odmocninu ze záporné hodnoty, nevím nic o tom, že by zaváděly dělení nulou.

Odpovědět 26.11.2012 13:41
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na
David Čápka:26.11.2012 13:43

Nejsem autorem tohoto tutoriálu, ale jedná se o ukázku, pokud chceš dělení nulou ošetřit, stačí přeci jednoduchá podmínka.

Odpovědět 26.11.2012 13:43
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Delete...
Člen
Avatar
Delete...:15.1.2013 20:49

Neviem prečo ale Visual Studio mi nechce v properties ani klasicky myšou dovoliť zmeniť výšku TextBoxu.
Nevedel by mi niekto poradiť ?
Dik za pomoc.

 
Odpovědět 15.1.2013 20:49
Avatar
David
Redaktor
Avatar
David:15.1.2013 20:57

mozes povolit vlastnost multiline

Odpovědět 15.1.2013 20:57
Nic néni nemožné!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Delete...
David Čápka:16.1.2013 1:32

Proto TextBOx je na jednu řádku, nemá smysl ho dělat vyšší. Můžeš zvětšit písmo, zvětší se pak i řádka.

Odpovědět 16.1.2013 1:32
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Delete...
Člen
Avatar
Delete...:17.1.2013 18:07

Aha diki.

 
Odpovědět 17.1.2013 18:07
Avatar
j.oo
Člen
Avatar
j.oo:7.2.2013 12:07

proč mi to prosím vůbec nepočítá ? resp.se to chová fakt divně :)

děkuji David

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace kalkulacka2
{
    public partial class kalkulacka : Form
    {

        public kalkulacka()
        {
            InitializeComponent();
            zadaniTextBox.Text = "0";

        }
        int cislo1;
        int cislo2;
        string funkce;
        int c = 0;

        private void Kalkulačka_Load(object sender, EventArgs e)
        {


        }

        private void button13_Click(object sender, EventArgs e)
        {
            if (zadaniTextBox.Text != "0")
            {
                zadaniTextBox.Text = zadaniTextBox.Text + ((Button)sender).Text;
            }
            else
            {
                zadaniTextBox.Text = ((Button)sender).Text;
            }


        }

        private void buttonscitani_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "scitani";

        }

        private void buttonodcitani_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "odcitani";

        }

        private void buttonnasobeni_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "nasobeni";

        }

        private void buttondeleni_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "deleni";

        }

        private void buttonrovnase_Click(object sender, EventArgs e)
        {
            cislo2 = int.Parse(zadaniTextBox.Text);
            if (funkce == "scitani")
            {
                c = cislo2 + cislo1;
            }
            else if (funkce == "odcitani")
            {
                c = cislo1 - cislo2;
            }
            else if (funkce == "nasobeni")
            {
                c = cislo1 * cislo2;
            }
            else if (funkce == "deleni")
            {
                c = cislo1 / cislo2;
            }

            zadaniTextBox.Text = c.ToString();
            funkce = "";



        }

        private void buttonc_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";
            funkce = "";
        }

        private void buttonce_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";

        }
    }
}
 
Odpovědět 7.2.2013 12:07
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na j.oo
David Čápka:7.2.2013 12:12

Výše máš zdrojový kód ke stažení, chybu si určitě zvládneš najít sám ;-)

Odpovědět  +1 7.2.2013 12:12
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Matyáš Černohous:28.4.2013 9:41

Kde je teda chyba, taky mě to nějak nefunguje?;(;(

 
Odpovědět 28.4.2013 9:41
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Matyáš Černohous
David Čápka:28.4.2013 9:51

Jak jsem psal, stáhni si zdroják a podívej se.

Odpovědět 28.4.2013 9:51
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
JeneCapek
Člen
Avatar
Odpovídá na David Čápka
JeneCapek:18.5.2013 17:30

To proč je to pro plus ve zdrojáku takto:

private void plusButton_Clic­k(object sender, EventArgs e)
{
if (funkce != "")
rovnaseButton_Clic­k(sender, e);
cislo1 = int.Parse(zada­niTextBox.Tex­t);
zadaniTextBox.Text = "";
funkce = "scitani";
}

 
Odpovědět 18.5.2013 17:30
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:18.8.2013 20:11

Díky. Tole měl být první díl okenních aplikací.

Odpovědět 18.8.2013 20:11
the cake is a lie
Avatar
leblr
Člen
Avatar
Odpovídá na David Čápka
leblr:24.3.2014 21:26

Prosím, začínám s C# mohl bys doplnit tu "jednoduchou" podmínku pro ošetření dělení nulou?
Mám za to že se bude muset změnit i výstup z int na text aby to mohl vypsat třeba "chyba"

Děkuju

 
Odpovědět 24.3.2014 21:26
Avatar
coolboytom
Člen
Avatar
coolboytom:11.5.2014 19:45

Potřeboval bych poradit, jak napsat tlačítko +/- (Pokud mě tedy chápete :) )

 
Odpovědět 11.5.2014 19:45
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coolboytom
Theodor Johnson:11.5.2014 19:49

Myslíš

±

nebo jak řešit tu funkci?

Odpovědět 11.5.2014 19:49
Mo8ilε 15 Ѐλđ
Avatar
Odpovídá na coolboytom
Ondřej Štorc:11.5.2014 19:56

Například toto:

private void buttonPlusMinus_Click(object sender, EventArgs e)
         {

zadaniTextBox.Text = int.Parse(zadaniTextBox.Text) * -2

         }

Nezkoušel jsem to, ale mělo by to fungovat..

Odpovědět 11.5.2014 19:56
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
coolboytom
Člen
Avatar
Odpovídá na Ondřej Štorc
coolboytom:13.5.2014 5:06

Děkuji za radu, ale já to už udělal takto :) -

private void btnpm_Click(object sender, EventArgs e)
{
cislo1 = cislo1 * (-1);
txtzad.Text = cislo1.ToString();
}

Editováno 13.5.2014 5:06
 
Odpovědět 13.5.2014 5:06
Avatar
coolboytom
Člen
Avatar
Odpovídá na Theodor Johnson
coolboytom:13.5.2014 5:08

Myslel jsem to tlačítko co je na všech kalkulačkách a když na něj kliknete, dá to před číslo mínus (dá ho do záporu) a když na něj kliknete znova, bude to číslo opět kladné.

 
Odpovědět 13.5.2014 5:08
Avatar
qwertyW
Redaktor
Avatar
Odpovídá na coolboytom
qwertyW:6.7.2014 9:34

od čísla odečteš dvojnásobek jeho hodnoty.

Odpovědět 6.7.2014 9:34
Programuji, tedy jsem.
Avatar
Marek Mžyk
Člen
Avatar
Marek Mžyk:5.6.2016 0:09

Čau chlapi,co se vkládá do CLICKU u +,-,/,*,=,CE a C? Díky

 
Odpovědět 5.6.2016 0:09
Avatar
Jirka Kouba
Člen
Avatar
Jirka Kouba:22.2.2018 15:03

snažím se vymyslet tu změnu znamínka a myslím, že takhle je to dobře, ale z nějakého důvodu mi to nefunguje.
Díky

if (((zadanitextBox.Text).ToString()).StartsWith("-"))
                ((zadanitextBox.Text).ToString()).Remove(0, 1);
            else
                ((zadanitextBox.Text).ToString()).Insert(0,"-");
 
Odpovědět 22.2.2018 15:03
Avatar
David Dostal
Redaktor
Avatar
Odpovídá na Jirka Kouba
David Dostal:22.2.2018 15:13

Metody Remove a Insert na stringu řetězec přímo neupraví, ale vrátí nový upravený řetězec.
Je tedy třeba výsledek znovu přiřadit, například něco ve smyslu

zadanitextBox.Text = zadanitextBox.Text.Remove(0, 1);
zadanitextBox.Text = zadanitextBox.Text.Insert(0,"-");

Mimochodem pokud vím, tak TextBox.Text už je string, takže volat .ToString() je trochu zbytečné.

 
Odpovědět  +1 22.2.2018 15:13
Avatar
Jirka Kouba
Člen
Avatar
Jirka Kouba:22.2.2018 15:14

aha, už chápu. Díky moc

 
Odpovědět 22.2.2018 15:14
Avatar
Martin Michale:21. února 15:32

Zkoušel jsem si u tohoto prográmku pohrát s možnostmi kontrolek, ale u toho zadaniTextBoxu se mi nedaří změnit barva písma. Barva pozadí ano. Ale třeba žluté písmo na černém pozadí neudělám. Přitom na tlačítkách to není problém.
Není třeba ten textbox nějak aktualizovat po každé změně?

 
Odpovědět 21. února 15:32
Avatar
Odpovídá na Martin Michale
Michal Štěpánek:22. února 9:28

Nejsem si jistý, jestli winform umí v TextBoxu měnit barvu písma... WPF myslím, že jo...

Odpovědět 22. února 9:28
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Martin Michale:22. února 12:21

No vlastnost ForeColor by tam byla, ale vůbec nereaguje.

 
Odpovědět 22. února 12:21
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Martin Michale
Marek Uhlik:22. února 12:36

A odkud se to snažíš změnit? Pošli kód aby jsme viděli jak se to zkoušíš změnit

 
Odpovědět 22. února 12:36
Avatar
Odpovídá na Marek Uhlik
Martin Michale:22. února 13:07

No zakliknul jsem to v okně Properties. Ve FormDesigner.cz to vygenerovalo toto:
//
// zadaniTextBox
//
this.zadaniTex­tBox.BackColor = System.Drawin­g.Color.Black;
this.zadaniTex­tBox.Enabled = false;
this.zadaniTex­tBox.Font = new System.Drawin­g.Font("Quartz MS", 15.75F, System.Drawin­g.FontStyle.Bol­d, System.Drawin­g.GraphicsUnit­.Point, ((byte)(0)));
this.zadaniTex­tBox.ForeColor = System.Drawin­g.Color.Aqua;
this.zadaniTex­tBox.Location = new System.Drawin­g.Point(10, 10);
this.zadaniTex­tBox.Name = "zadaniTextBox";
this.zadaniTex­tBox.Size = new System.Drawin­g.Size(241, 33);
this.zadaniTex­tBox.TabIndex = 0;

Kromě té vlastnosti ForeColor se všechno nastavilo v pořádku. Samozřejmě psal jsem o žluté a tady je v kódu Aqua, Hrál jsem si s tím všelijak.

 
Odpovědět 22. února 13:07
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Martin Michale
Marek Uhlik:22. února 15:36

A když nastavíš vlastnost Enabled na true? Tak to dělá to stejné?

 
Odpovědět 22. února 15:36
Avatar
Martin Michale:25. února 14:31

Ano "Enabled = True" a funguje to. Asi je to bohužel pochopitelné. Aktivní box bude mít normální písmo, Pasivní bude zešedlé. Ale mohla tam být aspoň možnost zvolit jinou barvu. Škoda.
Bohužel s Enabled můžu zase do toho TextBoxu zapisovat a to i text a znaky. Takže asi budu musel hlídat stisknuté klávesy.

 
Odpovědět 25. února 14:31
Avatar
Odpovídá na Martin Michale
Andy Scheuchzer:25. února 16:55

ReadOnly by mělo stačit.

Odpovědět 25. února 16:55
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
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 44 zpráv z 44.