Ako nastaviť odkaz alebo funkciu tlačidlu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Ako nastaviť odkaz alebo funkciu tlačidlu – .NET – Fórum – Programujte.comAko nastaviť odkaz alebo funkciu tlačidlu – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
w3q0
Věrný člen
27. 8. 2007   #1
-
0
-

mám problém, spravil som si taký jednoduchý kód:

/*

* Vytvořeno aplikací SharpDevelop.
* Uživatel: Gueest
* Datum: 27.8.2007
* Čas: 9:33
*
* Tento template můžete změnit pomocí Nástroje | Možnosti | Psaní kódu | Upravit standardní hlavičky souborů.
*/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace win
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
Console.WriteLine("Zaujímavé");
Console.ReadLine();
InitializeComponent();

//
// TODO: Add constructor code after the InitializeComponent() call.

}

void Button1Click(object sender, EventArgs e)
{

}

void NovinkyToolStripMenuItemClick(object sender, EventArgs e)
{

}
}
}

a teraz neviem, ako napr. tlačidlu pokračovať nastaviť funkciu. Napr. by som chcel aby keď stlačím pokračovať, tak by mi vypísalo určitý text. ako na to?

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
Reklama
Reklama
DeaLer+2
Hero
27. 8. 2007   #2
-
0
-

Prostě u toho tlačítka odchyť událost "Click" a do kódu zadej.

Console.WriteLine("click");


Možná jsem tě špatně pochopil, nechceš náhodou vědět, jak odchytit událost? Buď to udělej v designeru a nebo např. v konstruktoru formuláře.



this.Button1.Click += new EventHandler(Button1Click);


Jestli jsi chtěl úplně něco jinýho, tak sorry, ale příště se trochu rozepiš ... a přečti si pravidla ;)

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
w3q0
Věrný člen
27. 8. 2007   #3
-
0
-

Neviem, nechápem tvoj postup, trochu ti vysvetlím čo chcem. Chcem spraviť to, že ak kliknem na tlačidlo pokračovať zruší sa všetko v tom okne, okrem toho menu novinky, a vypíše sa určitý text. Vlastne ako keby som z toho spravil odkaz, napr. ako je to v HTML

<a href="www.niečo.cz/index.html

Proste odkaz sa prepojí na niečo iné, ja chcem aby tá moja funkcia alebo ako to nazvať, splnila tu akciu čo som popísal vyššie.
Pretože teraz ak na to kliknem nič sa neudeje. Ja vlastne chcem zistiť, ako môžem spraviť, že pri kliknutí sa aj niečo udeje ;)

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
DeaLer+2
Hero
27. 8. 2007   #4
-
0
-

To w3q: Stále ti nerozumím, zkus to znova a všechno pořádně vysvětli, ale promysli si to, protože píšeš zmateně a zdá se, že ani sám nevíš, co vlastně chceš (a zkus taky občas použít google, je to lepší, než se ptát). Já nemám kříšťálovou kouli.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
mephi0
Expert
27. 8. 2007   #5
-
0
-

možno toto:

ProcessStartInfo psi = new ProcessStartInfo("http://mephi.aspweb.cz");

psi.UseShellExecute = true;
Process.Start(psi);

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
DeaLer+2
Hero
27. 8. 2007   #6
-
0
-

To mephi: No, jestli jo, tak mě to skutečně udivuje ;)

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
w3q0
Věrný člen
28. 8. 2007   #7
-
0
-

To je také ťažké ma pochopiť?V každom programe keď kliknete na nie jaké tlačidlo(button) tak sa niečo udeje, napr. keď v v PSPade kliknete na súbor, tak sa vysunie vyskakovacie menu. Alebo keď kliknete na tlačidlo, na zmenu syntaxu, tak sa zmení syntax. Tým pádom každé tlačidlo má nie jakú funkciu. A preto chcem vedieť ako tu udalosť vytvoriť. Ako urobiť, že keď kliknem na tlačidlo, tak sa niečo aj udeje.

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
Smokie0
Expert
28. 8. 2007   #8
-
0
-

Podla mna mu ide o to, ze tam ma menu s tlacitkami a chce aby sa mu po stlaceni tlacitka zmenil obsah inej casti toho formulara, alebo co to tam ma :) Tak ako to je na internetovych strankach.

Nahlásit jako SPAM
IP: ...–
DeaLer+2
Hero
28. 8. 2007   #9
-
0
-

void Button1Click(object sender, EventArgs e)

{

}


A co tahle metoda v tvým kódu, ta ti nestačí? Ona je pravděpodobně přiřazená k události Click tlačítka Button1 a do jejího těla prostě zapiš kód, kterej chceš províst. No a pokud není, tak ji buď přiřaď v designeru (přes PropertyGrid) a nebo tímhle kódem v konstruktoru.

this.Button1.Click += new EventHandler(Button1Click);


Ale prober se, tohle jsem už psal. Nediv se, že není možný ti konkrétně odpovědět, když nedokážeš položit srozumitelnou otázku ke konkrétnímu problému bez toho, abys zmínil několik dalších otázek, který s tvým problémem vlastně vůbec nesouvisej. Teď je z toho bezpředmětnej bordel a ne diskuze, která někomu pomůže.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
w3q0
Věrný člen
28. 8. 2007   #10
-
0
-

ok, ale ked som používal ten prvý kód, tak to niejak nešlo, asi som ho dal tam kde som nemal alebo čo. A neviem nájsť to PropertyGrid.a ten kód je tam už, ale neviem čo z ním. Ja som z toho debil. Vysvetlite mi kde je propertygrid a hotovo ;)

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
DeaLer+2
Hero
28. 8. 2007   #11
-
0
-

To w3q: Já už z tebe nemůžu :) PropertyGrid je control, kde máš napsaný jednotlivý vlastnosti a události vybranýho prvku (a taky k nim můžeš doplnit hodnotu). Najdeš ho v jednom z postranních panelů tvého IDE a překvapivě bude mít titulek properties nebo vlastnosti.

BTW: kup si knížku a nauč se základy událostmi řízeného programování, bude to pak mnohem jednodušší

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
w3q0
Věrný člen
28. 8. 2007   #12
-
0
-

Ak mám tento kód:

/*

* Vytvořeno aplikací SharpDevelop.
* Uživatel: Gueest
* Datum: 28.8.2007
* Čas: 14:21
*
* Tento template můžete změnit pomocí Nástroje | Možnosti | Psaní kódu | Upravit standardní hlavičky souborů.
*/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace present
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();

//
// TODO: Add constructor code after the InitializeComponent() call.
//
}

void Label1Click(object sender, EventArgs e)
{

}

void Button1Click(object sender, EventArgs e)
{
Application.ApplicationExit+= Button1Click();
}
}
}
, tak mi vypisuje chybu

C:\Documents and Settings\Gueest\My Documents\SharpDevelop Projects\present\present\MainForm.cs(41,34) : Chyba CS1501: No overload for method 'Button1Click' takes '0' arguments
Sestavení úspěšně dokončeno.


Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
DeaLer+2
Hero
28. 8. 2007   #13
-
0
-

Application.ApplicationExit += new EventHandler(Button1Click);


Je to opravdu tak složitý, podívat se na ty ukázky kódu, co jsem tady postnul. Asi to tady zamknu.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
mephi0
Expert
28. 8. 2007   #14
-
0
-

DeaLer: každy nejak začínal :)

#Develop nepodporuje to, keď kliknem na button v designeri tak mi vytvori automaticky funkciu a prida ju k eventu ?

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
DeaLer+2
Hero
28. 8. 2007   #15
-
0
-

To mephi: Jistě, proto mám pochopení, ale tohle je trochu něco jinýho ;)

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
w3q0
Věrný člen
29. 8. 2007   #16
-
0
-

ked použijem dealerov kód vypíše:Sestavení začalo.
Překládám win2
C:\Documents and Settings\Gueest\My Documents\SharpDevelop Projects\win2\win2\MainForm.Designer.cs(22,27) : Chyba CS0115: 'win2.MainForm.Dispose(bool)': no suitable method found to override
Sestavení úspěšně dokončeno.

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
DeaLer+2
Hero
29. 8. 2007   #17
-
0
-

Ne, to není tím kódem ... to znamená, že neexistuje metoda, kterou by mohla metoda Dispose(bool) v souboru MainForm.Designer.cs předefinovat (všimni si, že tam je modifikátor override). A proč ta chyba? V souborech MainForms.cs a MainForm.Designer.cs, jsou parciální třídy a ty musej mít stejnej název a musej bejt ve stejným jmenným prostoru (takžes to asi nějak rozházel). Jinou příčinu nevidím.

PS: Co to zkusit jinak než bezhlavým sázením dotazů do diskuze Zkus nad tím programování trochu přemýšlet ... ušetříš tím starosti sobě i ostatním. Máš tam anglickou hlášku a dokonce i kód chyby, co to zkusit zadat do googlu.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
gameWriter
~ Anonymní uživatel
11 příspěvků
1. 9. 2007   #18
-
0
-

Ahoj!
Nejprva musíš vědět rozdíl,že tlačidlo pokračovat má jenom text pokračovat jeho jméno a tedy i jméno odvozené události je defaultně pojmenované IDE-čkem(ten program ve kterém píšeš kód,třeba sharpDevelop) většinou poeticky a věcně button0 další pak button1 atd.
Takže určitě máš dva soubory,viď MainForm.cs a MainForm.Designer.cs - to jso ty particiální třídy-to znamená,že jedna třída může být ve více souborech.Dělá se to pro víc věcí,ale hlavně abys mohl lépe zpravovat veliké třídy a oddělil IDE-čkem generovaný kód třeba ten tvůj Button0Click od vlastnoručně psaných metod,ale tím se ty teď netrap.(Chápeš ideu classe a objektů a programování jako takovému(ne jen dálkového ovládání tvojí TV),jestli ne přečti si něco o objektově orientovaném programování než začneš krotit windows).

jestli aspoň trochu tak pokračuj...
takže pokud se jedná o button,jeho vlastnost("proměnná") button1.Text ="pokracovat";
to je jenom ten text co bude vypisovat na sobě,ale jeho jméno (Name) a tedy to co zajímá programátora je button0.
void Button1Click(object sender, EventArgs e) ti pravděpodobně vygenerovalo IDE samo ,když jsi dvakrát klikl na ten čudl,je to nejpoužívanější událost buttonu to,že ho někdo zmáčkne(ztlačí tlačítko),proto IDE se snaží nejvíce ušetřit ti práci,to j jeho práce.Takže tělo téhle události bude provedeno dycky,když zmáčkneš myší tenhle čudlík.
Napiš do těch složenejch závorek třeba:

void Button1Click(object sender, EventArgs e)
{
MessageBox.Show("Stejnak to moc nechápu");
}

Pokud potom,když zmáčkneš čudlík a vypíše se že tomu pořád ještě moc nerozumíš zamysli se nad tím ještě jednou,pokud se ti nic takovýho nevypíše,tak začni nejprve programovat Consolové aplikace a nauč se,alespoň trochu programovat,než se pustíš do win.
Windows je sice úderný a mám ho opravdu rád,díky němu mnozí z nás rozumí počítači a snadno se na něm učí,ale to neplatí pro začínajícího programátora,programovat tyhle vokínka vyžaduje představu o objektově orientovaným progamování a proto začni Csharpem programovat Consoli na pochopení tříd a jednotlivých objektů je ideální.

Pokud tohle víš a trápí tě něco jiného tak pošli celej tvůj zdroják a ještě jednou popiš svůj problém,protože takhle to vypadá,že jsi si řekl "naučím se programovat" a rovnou jsi zkočil do win a to není ten nejlehčí začátek.Čau

Nahlásit jako SPAM
IP: ...–
w3q0
Věrný člen
3. 9. 2007   #19
-
0
-

WoW, konečne ma niekto pochopil. Normálne žasnem :)P V každom prípade v konzole som robil a aj o objektovanom programovaní som čítal. Len som potreboval to slávne

   MessageBox.Show("Stejnak to moc nechápu");
. Proste konečne keď som klikol na button tak sa niečo udialo. Veľmi vďaka GameWriter!

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
w3q0
Věrný člen
3. 9. 2007   #20
-
0
-

Ešte by ma zaujalímalo: Ako mám spraviť, aby ten text, vypísalo v tom istom okne ako je tlačidlo button1?

Nahlásit jako SPAM
IP: ...–
HTML,CSS,PHP,MySQL, začínam s Objected C 2.0
DeaLer+2
Hero
3. 9. 2007   #21
-
0
-

To w3q: Tak to já taky žasnu, žes to konečně pochopil (psal jsem ti defakto totéž ;).

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
gameWriter
~ Anonymní uživatel
11 příspěvků
15. 9. 2007   #22
-
0
-

Jestli necemáš zkušenost z win Forms tak doporučuju jakoukoliv lepší knížku o programování i v těch pro začátečníky třeba s cSharpem je aspoň v jedný kapitole seznámení jak ovládat tuto záležitost a hlavně jak se ovládá přes IDE(já se to kdysi naučil ve VisualBasicu(brrr,ale .-)jsem rád)),ale jak říkám v tý pro začátečníky je to poslední kapitola protože vyžaduje znalost oop(objektově orientované programování) jako jsou metody,vlastnosti,události,dědičnosti...
Takže heslo zní "read and push"

A ještě k té tvé otázce...
Když tam do tý události dopíšeš...

void Button1Click(object sender, EventArgs e)
{

MessageBox.Show("bude hůř","Stejnak to moc nechápu");
this.Text = "Tohle okno "+Application.StartupPath + " "+Environment.MachineName+" "+ DateTime.Now.ToLongTimeString();


string meno = button1.Text; // pomocný string nechce se mi psát button1.Text,ale je to čuňárna u takle krátkého
char[] znaky = new char[meno.Length]; // pole znaků do kterého rozlložíme ten náš text
string pomocny = ""; // pomocný je už extrakt číslic z našeho názvu čudlíku,abychom mohli zvyšovat hodnotu
int novy = 0; // v téhle proměnné hodnotu zvětšujeme o jedna

znaky = meno.ToCharArray(); // načíst ten "text" do pole jednotlivých znaků

for(int i=5;i<meno.Length-1;i++)
{
// 1. 6 znaků je text no a pak může být libovolně dlouhé číslo a x na konci jako krat
pomocny += znaky[i]; // vybíráme znaky co jsou číslice a ukládáme do pomocné proměnné
}
try // poprvé se ten čudl jmenuje jinak a počítačka hodí chybu tak ji zachytíme a nastavíme to jak to má být
// ale nedoporučuju pokud to není nezbytně nutné používat try je to pomalé!
{
novy= Convert.ToInt32(pomocny)+1; // udělat to číslo z vybrané části textu a zvětšit ho o jednu
// no a poupravit náš text zase zpět a vypsat ho na našem tlačítku
button1.Text = "Click "+Convert.ToString(novy)+"x";
}
catch
{
// tohle se stane při nějaké chybě
// nám poprví protože čudlík má jiné jméno než potřebujem
button1.Text = "Click 1x";
// tomuhle názvu už program rozumí má daný formát: slovo - mezera - číslo - x
}

}



.-)

kdybych věděl že si umíš zřídit proměnou ve třídě MainForm
int pocet = 0;
stačilo by k počítání

void Button1Click(object sender, EventArgs e)
{
pocet++;
button1.Text = "akce "+Convert.ToString(pocet)+"x";
}
ale to by bylo moc jednoduchý,ne .-)

Zdar a sílu

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

 

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