Jak dostat údaje z proměnné prvočíslo do TextBoxu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Jak dostat údaje z proměnné prvočíslo do TextBoxu – C / C++ – Fórum – Programujte.comJak dostat údaje z proměnné prvočíslo do TextBoxu – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Petrroll0
Stálý člen
3. 2. 2010   #1
-
0
-

Zdar, s jazykem C# jsem absolutní začátečník. Věc je velmi triviální, a pokud se zde ptát na podobné blbosti nemám pak se omlouvám.
Snažím se udělat program který vypíše prvočísla od 0 do uživatelem daného čísla. Vytvořil jsem proto dvě metody Window1 (vytvořena základně) a vypocet (provádí samotný výpočet). Problém je že nevím jak dostat údaje z proměnné prvočíslo do TextBoxu.

   1.

class vypocet
long horniHranice;
public string text;
public vypocet(long cisloZadane)
{
this.horniHranice = cisloZadane;
}

public void zjisteniPrvocisel(long horniHranice)
{
long delenec = 0;
long delitel = 2;
long zbytek;
string prvocislo;
start:
while (delenec < horniHranice)
{
zbytek = delenec % delitel;
if(zbytek != 0)
{
++delitel;
if(delitel == delenec)
{

prvocislo = delenec.ToString();
Window1.vypisText(prvocislo);
delenec++;
delitel = 2;
goto start;
}
goto start;
}
else
{
if (delenec == horniHranice)
{
Window1.vypisText(prvocislo);
prvocislo = "Další prvočísla nejsou";

break;
}

delenec++;
goto start;
}
}

}
}


V třídě Window1 mám veřejnou metodu:
#

public void vypisText(string prvocislo)
{
vypisPrvocisla.Content += prvocislo + "/n";
}

Jenže díky tomu že jsem nikde nenašel pro mě srozumitelný návod na práci s veřejnými třídami tak to nevím jak se s nimi přesně pracuje.

EDIT: Nejenom jsem to vložil do špatné sekce, ale zapoměl jsem i na nadpis. Tímto se omlouvám.
(Asi tu budu za velkého blba)

Nahlásit jako SPAM
IP: 92.62.224.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
4. 2. 2010   #2
-
0
-

Jestli je vypisPrvocisla TextBox, tak potom:



vypisPrvocisla.Text = prvocislo;


Jestli chceš zobrazovat více řádek, tak musíš pro TextBox nastavit multiline nebo použít jiný ovládací prvek např. ListBox.

Nahlásit jako SPAM
IP: 85.207.166.–
Petrroll0
Stálý člen
4. 2. 2010   #3
-
0
-

V tom více méně problém není, měl jsem tam

vypisPrvocila.Text += "/N" + prvocislo;

Spíše mám problém jak zapsat/volat veřejnou metodu která je v základní třídě z třídy jiné. Či jak pracovat s GUI z jiné než hlavní třídy.

Nahlásit jako SPAM
IP: 92.62.224.–
liborb
~ Redaktor
+18
Guru
5. 2. 2010   #4
-
0
-

Metody se volájí jejich jménem, ale to si asi nechtěl slyšet/číst :smile1: . Možná mám poránu delší vedení, ale nějak nechápu, na co se vlastně ptáš. Můžeš uvést nějaký příklad? Nebo alespoň napsat, čeho by si chtěl dosáhnout.

Nahlásit jako SPAM
IP: 85.207.166.–
Petrroll0
Stálý člen
5. 2. 2010   #5
-
0
-

Jde o to že v základní třídě mám metodu

public void vypisText(string prvocislo)

{
vypisPrvocisla.Content += prvocislo + "/n";
}


A tu potřebuju zavolat z třídy výpočet, konkrétně jsem se o to snažil příkazem

Window1.vypisText(prvocislo);


Jenže to nefunguje. Takže se ptám jestli mám chybu v zápisu veřejné metody, či jejím volání.

Nahlásit jako SPAM
IP: 92.62.224.–
KIIV+42
God of flame
6. 2. 2010   #6
-
0
-

To Petrroll : predpokladam ze tomu predavas string.. pokud ne tak musis prevest na retezec..
pokud mas tak to treba chce -> ale kdo vi..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petrroll0
Stálý člen
6. 2. 2010   #7
-
0
-

Předávám řetězec.
viz:

prvocislo = delenec.ToString();

Window1.vypisText(prvocislo);


"pokud mas tak to treba chce -> ale kdo vi.. "
Trochu nechápu.

Nahlásit jako SPAM
IP: 92.62.224.–
KIIV+42
God of flame
6. 2. 2010   #8
-
0
-

no Window1 muze byt ukazatel.. nevim jak to je v C# .. ale v C++ bys musel urcite udelat Window1->vypisText(prvocislo);

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
liborb
~ Redaktor
+18
Guru
8. 2. 2010   #9
-
0
-

To volání je správně. Napiš sem, co to hlásí za chybu nebo sem dej celý kód.

Nahlásit jako SPAM
IP: 85.207.166.–
Petrroll0
Stálý člen
8. 2. 2010   #10
-
0
-

Jednoduše to nic nevypíše. Žádnou chybu to nezahlásí.
XAML:

<Window x:Class="WpfApplication1.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Výpočet prvočísel" Height="480" Width="359">
<Grid Height="441" Width="316">
<TextBox Height="27" Margin="20,41,17,0" Name="zadejCislo" VerticalAlignment="Top" TextChanged="textBox1_TextChanged" />
<Label Margin="20,0,17,0" Name="label1" Height="30" VerticalAlignment="Top">Zadej číslo do kterého budou vypočítána prvočísla</Label>
<Button Height="27" Margin="20,81,17,0" Name="vypisPrvocisla" VerticalAlignment="Top" Click="vypisPrvocisla_Click" IsEnabled="False">Zadej číslo</Button>
<TextBox Margin="20,118,17,17" Name="vypsanaPrvocisla" />
</Grid>
</Window>


vypocet.cs
      class vypocet


long horniHranice;

public string text;

public vypocet(long cisloZadane)

{

this.horniHranice = cisloZadane;

}



public void zjisteniPrvocisel(long horniHranice)

{

long delenec = 0;

long delitel = 2;

long zbytek;

string prvocislo;

start:

while (delenec < horniHranice)

{

zbytek = delenec % delitel;

if(zbytek != 0)

{

++delitel;

if(delitel == delenec)

{



prvocislo = delenec.ToString();

Window1.vypisText(prvocislo);

delenec++;

delitel = 2;

goto start;

}

goto start;

}

else

{

if (delenec == horniHranice)

{

prvocislo = "Další prvočísla nejsou";
Window1.vypisText(prvocislo);




break;

}



delenec++;

goto start;

}

}



}

}


Window1.xaml.cs:
namespace WpfApplication1

{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{

jeCislo();
zmenText();


}

public void vypisText(string prvocislo)
{
vypisPrvocisla.Content += prvocislo + "/n";
}



private void zmenText()
{
if (zadejCislo.Text == "")
{
vypisPrvocisla.IsEnabled = false;
vypisPrvocisla.Content = "Zadej číslo";

}
else
{
vypisPrvocisla.Content = "Vypiš prvočísla od 0 do " + zadejCislo.Text;
vypisPrvocisla.IsEnabled = true;
}

}



private long jeCislo()
{
string retezec = zadejCislo.Text;
long cislo = 0;

if (long.TryParse(retezec, out cislo))
{
}
else
{
zadejCislo.Text = "";
}

return cislo;

}

private void vypisPrvocisla_Click(object sender, RoutedEventArgs e)
{
try
{
long cislo = long.Parse(zadejCislo.Text);
vypocet pocty = new vypocet(cislo);

}

catch (Exception ex)
{
string chyba = ex.ToString();
MessageBox.Show(chyba);
}
}





}
}

Nahlásit jako SPAM
IP: 92.62.224.–
Wizard0
Stálý člen
8. 2. 2010   #11
-
0
-

Pozri sa, ked chces pristupovat k nestatickym premennam a funkciam objekt musis mat na neho nejaky ukazatel, referenciu (neviem ako sa tomu nadava v C#). Pointa je ale ta, ze musis svoju triedu vypocet upravit tak aby pri vytvoreni preberala ukazatel na objekt okna (v C++ zistis aktualny ukazatel pomocou this v C# asi podobne). Tento ukazatel potom ulozis a pomocou neho zavolas tu funkciu (volanie Window1.nieco() funguje iba ked je Window1 nejaky ten ukazatel, referencia, ked nie tak sa ti to tazko skompiluje).

Nahlásit jako SPAM
IP: 85.216.193.–
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, 119 hostů

Moderátoři diskuze

 

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