Přepis čísla double z textboxu do třídy – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přepis čísla double z textboxu do třídy – .NET – Fórum – Programujte.comPřepis čísla double z textboxu do třídy – .NET – Fórum – Programujte.com

 

johnybas0
Duch
8. 12. 2012   #1
-
0
-

mám takový problém. Potřeboval bych z tohoto formu kde mám jako private void bezdane a private void sdani přendat do dvou tříd, třídy bezdane a další třídu sdani. Nějak si nevím rady. Jsem jen začátečník tak se ani nedivte.

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 Kalkukator_DPP_DPC
{
    public partial class Vypocetmzdy : Form
    {
        public Vypocetmzdy()
        {
            InitializeComponent();
        }

        private void buttonv_Click(object sender, EventArgs e)
        {
            try                                     // zkouší jestli jsou hodnoty pouze čísla
            {
                double hm;                          //double kvůli desetiným místám u procent
                             

                hm = double.Parse(textBoxhm.Text);


                if (radioButtondpc.Checked == true)     // výpočet dpc
                {
                    if (hm < 2500)
                    {
                        bezdane();
                    }
                    else
                    {
                        sdani();
                    }
                   
                }
                else if (radioButtondpp.Checked == true)   // výpočet dpp
                {

                    if (hm > 10000)
                    {
                        sdani();
                    }
                    else
                    {
                        bezdane();
                    }

                       
                }
                else
                {
                    MessageBox.Show("Vyberte zda chcete vypočíst DPP nebo DPC.", "Chyba");
                }
            }
            catch
            {
                MessageBox.Show("Nezadali jste číslo ve správném tvaru nebo jste nezaškrtli co chcete vypočítat.\r 1)Zaškrtněte zda chcete vypočítat dpp či dpč \r 2)Zadejte do pole s hrubou mzdou číslo", "Chyba");
            }
        }

        private void bezdane()
        {
                double hm;                        
                double vysledeksm;
                double vysledekzd;
                double vysledekzp;
                double vysledeksp;
                double vysledeksp2;
                double vysledekzp2;
                double vysledekcm;
                double pdane = 0.15;
               
            hm = double.Parse(textBoxhm.Text);

            vysledeksm = (hm / 100) + 1;
                        vysledeksm = vysledeksm - 0.51;
                        vysledeksm = Convert.ToInt32(vysledeksm);
                        vysledeksm = vysledeksm * 100;
                        textBoxsm.Text = vysledeksm.ToString();


                        vysledekzd = vysledeksm * pdane;
                       

                        vysledekzp = 0;
                        textBoxzp.Text = vysledekzp.ToString();

                        vysledeksp = 0;
                        textBoxsp.Text = vysledeksp.ToString();

                        vysledeksp2 = 0;
                        textBoxsp2.Text = vysledeksp2.ToString();

                        vysledekzp2 = 0;
                        textBoxzp2.Text = vysledekzp2.ToString();
                   

                        if (checkboxpp.Checked == true)
                        {
                            vysledekcm = hm - vysledekzp - vysledeksp;
                            textBoxcm.Text = vysledekcm.ToString();
                            textBoxsd.Text = vysledekzd.ToString();
                            textBoxzd.Text = 0.ToString();
                        }
                        else
                        {
                            vysledekcm = hm - vysledekzp - vysledeksp - vysledekzd;
                            textBoxcm.Text = vysledekcm.ToString();
                            textBoxzd.Text = vysledekzd.ToString();
                            textBoxsd.Text = 0.ToString();
                        }
        }

        private void sdani()
        {
            double hm;
            double vysledeksm;
            double vysledekzd;
            double vysledekzp;
            double vysledeksp;
            double vysledeksp2;
            double vysledekzp2;
            double vysledekcm;
            double pdane = 0.15;
            double pzp = 0.045;
            double psp = 0.065;
            double psm = 1.34;
            double psp2 = 0.25;
            double pzp2 = 0.09;
            hm = double.Parse(textBoxhm.Text);

            vysledeksm = hm * psm;
            vysledeksm = (vysledeksm / 100);
            vysledeksm = vysledeksm - 0.51;
            vysledeksm = Convert.ToInt32(vysledeksm);
            vysledeksm = (vysledeksm + 1) * 100;
            textBoxsm.Text = vysledeksm.ToString();

            vysledekzd = vysledeksm * pdane;
           

            vysledekzp = hm * pzp;
            vysledekzp = vysledekzp - 0.51;
            vysledekzp = Convert.ToInt32(vysledekzp);
            vysledekzp = (vysledekzp + 1);
            textBoxzp.Text = vysledekzp.ToString();

            vysledeksp = hm * psp;
            vysledeksp = vysledeksp - 0.51;
            vysledeksp = Convert.ToInt32(vysledeksp);
            vysledeksp = (vysledeksp + 1);
            textBoxsp.Text = vysledeksp.ToString();

            vysledeksp2 = hm * psp2;
            vysledeksp2 = vysledeksp2 - 0.51;
            vysledeksp2 = Convert.ToInt32(vysledeksp2);
            vysledeksp2 = (vysledeksp2 + 1);
            vysledeksp2 = Convert.ToInt32(vysledeksp2);
            textBoxsp2.Text = vysledeksp2.ToString();


            vysledekzp2 = hm * pzp2;
            vysledekzp2 = vysledekzp2 - 0.51;
            vysledekzp2 = Convert.ToInt32(vysledekzp2);
            vysledekzp2 = (vysledekzp2 + 1);
            textBoxzp2.Text = vysledekzp2.ToString();
            if (checkboxpp.Checked == true)
            {
                vysledekcm = hm - vysledekzp - vysledeksp;
                textBoxcm.Text = vysledekcm.ToString();
                textBoxsd.Text = vysledekzd.ToString();
                textBoxzd.Text = 0.ToString();
            }
            else
            {
                vysledekcm = hm - vysledekzp - vysledeksp - vysledekzd;
                textBoxcm.Text = vysledekcm.ToString();
                textBoxzd.Text = vysledekzd.ToString();
                textBoxsd.Text = 0.ToString();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Pro výpočet mzdy, nejprve zadejte zda chcete vypočítat mzdu dohody o provední práce nebo dohody o provedení práce, poté zadejte do plíčka s hrubou mzdou čásku v Kč.", "Nápověda");
        }
    }
}

Je to pro jednoduchý výpočet mzdy Dohody o pracovní činnosti a dohody o provedení práce.

Nahlásit jako SPAM
IP: 94.113.1.–
Atheo+4
Stálý člen
9. 12. 2012   #2
-
0
-

#1 johnybas
Dobrý den, snad to chápu dobře. Chcete předat z jednoho formu nějaké data do druhého formu. Na to je jednoduchá odpověď.

// form1
// tady si vypočítám nějakou hodnotu
int x = 5, y = 10,vysledek;
vysledek = x - y;
// vysledek nabyva nyni hodnotu -5
Form2 f2 = new Form2(x);
f2.ShowDialog();
// FORM2
public void Form2(string x)
{
	textBox1.Text = x;
}

váš textbox bude nyní naplněn hodnotou -5.

Pokud se ale jedná o to, že chcete hodnotu z formu1 jen odeslat do jiné třídy a vypočítat + vrátit zpět do formu1 tak se to dělá následovně.

// FORM1
mojetrida mt = new mojetrida();
int x = 5, y = 10, vysledek;
vysledek = x - y;
// vysledek nabyva hodnoty -5
mojetrida.vypocitej(out vysledek);
textBox1.Text = vysledek;
// moje trida
public void mojetrida(out string vysledek)
{
	vysledek = vysledek + 50;
	// hodnota byla -5 a pricetlo se 50 tudiz vysledek se rovna 45
}

a do textboxu ve formu1 se vypíše hodnota 45. (Pokud by to nefungovalo vyvolejte třídu už s parametrem x a uložte si ji ve své třídě a pak sní pracujte už v "mojetrida".

Tomáš

Nahlásit jako SPAM
IP: 188.175.140.–
Atheo+4
Stálý člen
9. 12. 2012   #3
-
0
-

#1 johnybas
BTW : pokud máte na mysli to s tou třídou, tak metody musejí být PUBLIC - nikoli PRIVATE nastudujte si OOP metodu zapouzdření.

Nahlásit jako SPAM
IP: 188.175.140.–
johnybas0
Duch
9. 12. 2012   #4
-
0
-

No nevím jestli jsem to pochopil uplně správně, ale zítra se stím zkusím nějak poprat. 
Jen ještě nevím jak bych tedy zapsal toto v tom novém formu2, když checkbox existuje jen pro ten první.

if (checkboxpp.Checked == true)
                        {
                            vysledekcm = hm - vysledekzp - vysledeksp;
                            textBoxcm.Text = vysledekcm.ToString();
                            textBoxsd.Text = vysledekzd.ToString();
                            textBoxzd.Text = 0.ToString();
                        }
                        else
                        {
                            vysledekcm = hm - vysledekzp - vysledeksp - vysledekzd;
                            textBoxcm.Text = vysledekcm.ToString();
                            textBoxzd.Text = vysledekzd.ToString();
                            textBoxsd.Text = 0.ToString();

Ještě také bych měl dotaz jak bych tedy zapsal místo toho např. bezdane(); přímo tu třídu 
 

if (radioButtondpc.Checked == true)     // výpočet dpc
                {
                    if (hm < 2500)
                    {
                        bezdane();
                    }
                    else 
                    {
                        sdani();
                    }

Děkuji moc

Nahlásit jako SPAM
IP: 94.113.1.–
Atheo+4
Stálý člen
9. 12. 2012   #5
-
0
-

#4 johnybas
Co tedy chceš? Používáš jeden form? nebo dva?

Nahlásit jako SPAM
IP: 188.175.140.–
Atheo+4
Stálý člen
9. 12. 2012   #6
-
0
-

#5 Atheo
Pokud jeden ... a jeden soubor.cs k tomu tak to bude takhle

// soubor.cs

public void sdani(double cislo, out double vysledek)
{
	vysledek = cislo / 4; // tady si uděláš ten výpočet s daní
}

public void bezdane(double cislo, out double vysledek)
{
	vysledek = cislo / 2; // tady si uděláš ten výpočet bez daně
}

a pak to voláš ve FORM1

soubor s = new soubor();

if (radioButtondpc.Checked == true)     // výpočet dpc
                {
                    if (hm < 2500)
                    {
                        s.bezdane(MojePromennaKterouChciVypocitat, out Vysledek);
                    }
                    else 
                    {
                        s.sdani(MojePromennaKterouChciVypocitat, out Vysledek);
                    }
		    MujTextBox.Text = Vysledek.ToString();

Takhle nějak by to mohlo vypadat.

Nahlásit jako SPAM
IP: 188.175.140.–
johnybas0
Duch
9. 12. 2012   #7
-
0
-

#5 Atheo
já používám jeden hlavní a pak další dva jeden pro výpočet bezdane a dalšípro sdani

Nahlásit jako SPAM
IP: 94.113.1.–
Atheo+4
Stálý člen
9. 12. 2012   #8
-
0
-

#7 johnybas
no jak jsem říkal pokud chceš předat z jednoho formu data do druhého udělal jsem ti na to ukázkovou aplikaci

FORM1

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double cislo = double.Parse(textBox1.Text);
            Form2 f = new Form2(cislo);
            f.ShowDialog();
        }
    }
}

FORM2

namespace test
{
    public partial class Form2 : Form
    {
        public Form2(double cislo)
        {
            InitializeComponent();
            label1.Text = cislo.ToString();
        }
    }
}

Do formu jedna napíšu nějakou hodnotu do textboxu... po stlačení čudlíku se otevře nový form2 s tou hodnotou co byla  v textboxu a je nyní přeparsovaná do typu double

Ve formu2 se načte hodnota double převede se do stringu a zapíšu ji do labelu.

Tomáš

Nahlásit jako SPAM
IP: 188.175.140.–
johnybas0
Duch
9. 12. 2012   #9
-
0
-

#8 Atheo
Asi jsem natvrdlý i jsem zkoušel ten tvůj malý programek jsem nebyl schopný zrealizovat.

Nahlásit jako SPAM
IP: 94.113.1.–
Atheo+4
Stálý člen
9. 12. 2012   #10
-
+1
-
Zajímavé

#9 johnybas
víš co, napiš mi na mail, pošli mi tam celý projekt a řekni co chceš aby to přesně dělalo, já to udělám a pošlu ti to zpět. A uvidíš jak to mělo být

winitrixx@gmail.com

Tomáš

Nahlásit jako SPAM
IP: 188.175.140.–
johnybas0
Duch
9. 12. 2012   #11
-
0
-

#10 Atheo
Mockrát ti děkuji

Nahlásit jako SPAM
IP: 94.113.1.–
ingiraxo+15
Grafoman
9. 12. 2012   #12
-
0
-

zapomeň na nějakej form a představ si, jak by si předal parametry z třídy A do třídy B... přes konstruktor, funkci, udalosti, delegatem apod.

Atheo ti ukazal pres konstruktor - to je ta funkce se stejným názvem jako třída 

class A {
    public double cislo = 10; // cislo, ktery chci predat do tridy B
}

class B {
    private double cislo;

    public B(double cisloZeTridyA) {
        cislo = cisloZeTridyA;
    }
}

// potom jen:
A a = new A();
B b = new B(a.cislo); // preda cislo 10

/*
 * a ted si predstav ze to jsou 2 formy, kde form je A a form2 je B,
 * kam potrebujes predat hodnotu
 */

class FormA : Form {
    private double cislo = 10;

    // konstruktor tridy FormA
    public FormA() {
        InitializeComponent();
    }

    private void OtevriFormB() {
        new FormB(cislo);
    }
}

class FormB : Form {
    private double cislo;

    // konstruktor tridy FormB
    public FormA(double cisloZFormuA) {
        InitializeComponent();
        cislo = cisloZFormuA;
    }
}

chápeš už? :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý