|
Dobrodru₧stvφ v C# |
|||||
Jak odkr²t zßkoutφ jazyka C# |
||||||
╚asovß nßroΦnost (min): |
ZaΦßteΦnφk |
PokroΦil² |
Profesionßl |
|||
|
|
|
||||
|
Pou₧it² operaΦnφ systΘm : Hlavnφ v²vojov²
nßstroj : DalÜφ v²vojov² software : Jin² software : |
Windows 2000 SP4 Visual C# .NET 2003 Äßdn² Äßdn² |
||||
|
Obsah |
Obtφ₧nost |
╚as (min) |
áP°idßvßnφ
instancφ ovlßdacφch prvk∙ na formulß° za b∞hu aplikace |
|
|
|
||
|
||
|
P°idßvßnφ instancφ ovlßdacφch prvk∙ na formulß° za b∞hu
aplikace
IntegrovanΘ prost°edφ jazyka C# nabφzφ, podobn∞ jako i dalÜφ programovacφ nßstroje Visual Studia .NET, vizußlnφ nßvrhß°, pomocφ kterΘho si m∙₧ete podobu vyvφjenΘ aplikace upravit podle sv²ch pot°eb. Zcela jist∞ se shodneme na tom, ₧e p°φtomnost vizußlnφho nßvrhß°e je velice praktick²m prvkem integrovanΘho prost°edφ, ovÜem lze jej pou₧φt jenom v rßmci re₧imu nßvrhu aplikace. Pokud ovÜem budete chtφt p°idßvat na plochu formulß°e instance ovlßdacφch prvk∙ p°φmo za b∞hu programu, budete se muset p°iklonit k psanφ programovΘho k≤du. Jeliko₧ je p°idßvßnφ a pota₧mo i odstra≥ovßnφ instancφ ovlßdacφch prvk∙ z formulß°e aplikace docela b∞₧nou zßle₧itostφ, vysv∞tlφme si, jak tuto ·lohu splnit nejrychlejÜφm mo₧n²m zp∙sobem. Postupujte takto:
ááááááááááá //Po aktivaci metody bude na stßvajφcφ formulß° p°idßna
ááááááááááá //instance ovlßdacφho prvku Button.
ááááááááááá private void
button1_Click(object sender, System.EventArgs
e)
ááááááááááá {
ááááááááááááááááá //Vytvo°enφ instance t°φdy Button a ulo₧enφ odkazu
ááááááááááááááááá //na vzniklou instanci do referenΦnφ prom∞nnΘ TlaΦφtko_01
ááááááááááááááááá Button
TlaΦφtko_01 = new Button();
ááááááááááááááááá //Nastavenφ nßv∞stφ vytvo°enΘ instance t°φdy Button.
ááááááááááááááááá TlaΦφtko_01.Text
= "Spustit aplikaci";
ááááááááááááááááá //Nastavenφ velikosti (Üφ°ky a v²Üky) vytvo°enΘ instance
ááááááááááááááááá //t°φdy Button.
ááááááááááááááááá TlaΦφtko_01.Size
= new Size(100, 50);
ááááááááááááááááá //UrΦenφ pozice (x, y) levΘho hornφho rohu vytvo°enΘ
instance
ááááááááááááááááá //t°φdy Button (Pozice instance ovlßdacφho prvku je urΦenß
ááááááááááááááááá //relativn∞ ve vztahu k formulß°i).
ááááááááááááááááá TlaΦφtko_01.Location
= new Point(10, 125);
ááááááááááááááááá //P°idßnφ vytvo°enΘ instance t°φdy Button do kolekce
ááááááááááááááááá //ovlßdacφch prvk∙ formulß°e. Za tφmto ·Φelem pou₧ijeme
ááááááááááááááááá //metodu Add t°φdy
System.Windows.Forms.Control.ControlCollection.
ááááááááááááááááá this.Controls.Add(TlaΦφtko_01);
ááááááááááá }
Novou instanci ovlßdacφho prvku, resp. t°φdy Button provedeme pomocφ p°i°azovacφho p°φkazu a operßtoru new. Pomineme-li modifikaci r∙zn²ch vlastnostφ vytvo°enΘ instance, dojdeme k zßv∞ru, ₧e veÜkerou prßci pot°ebnou pro p°idßnφ novΘ instance na formulß°, realizuje finßlnφ °ßdek programovΘho k≤du:
ááááá ááááá this.Controls.Add(TlaΦφtko_01);
áá
KlφΦovΘ slovo this p°edstavuje aktußlnφ instanci formulß°e, p°esn∞ji °eΦeno aktußlnφ instanci t°φdy Form1. P°φstup ke vÜem instancφm ovlßdacφch prvk∙, kterΘ se na formulß°i nachßzejφ, poskytuje kolekce instancφ s nßzvem Controls. Pou₧ijeme-li metodu Add s nßzvem instance, kterou chceme p°idat na plochu aktivnφho formulß°e, bude tato instance p°idßna prßv∞ do kolekce instancφ Controls. P°ipome≥me, ₧e p°idßnφ instance do kolekce Controls tuto instanci na formulß°i takΘ zviditelnφ (nenφ tedy nutnΘ dodateΦn∞ nastavovat vlastnosti Visible vytvo°enΘ instance na hodnotu True).
ááááááááááá //Vytvo°enφ asociace mezi udßlostφ Click vytvo°enΘ instance
ááááááááááá //t°φdy Button a jejφm zpracovatelem.
ááááááááááá TlaΦφtko_01.Click
+=new EventHandler(TlaΦφtko_01_Click);
ááááááááááá //Programovß konstrukce zpracovatele udßlosti TlaΦφtko_01_Click
ááááááááááá private void
TlaΦφtko_01_Click(object sender, EventArgs e)
ááááááááááá {
ááááááááááááááááá //Vytvo°enφ instance t°φdy Process, kterß se nachßzφ v
jmennΘm
ááááááááááááááááá //prostoru System.Diagnostics.
ááááááááááááááááá System.Diagnostics.Process
Aplikace_01 =
ááááááááááááááááááááááá new System.Diagnostics.Process();
ááááááááááááááááá
ááááááááááááááááá //Specifikace nßzvu aplikace, kterou budeme chtφt spustit.
ááááááááááááááááá //Za tφmto ·Φelem pou₧ijeme vlastnost FileName.
ááááááááááááááááá Aplikace_01.StartInfo.FileName
= "Notepad";
ááááááááááááááááá //Zavolßnφm metody Start spustφme vybranou aplikaci.
ááááááááááááááááá Aplikace_01.Start();
ááááááááááá }
P°ekrytφ metody OnPaint formulß°e
Metoda OnPaint reaguje na udßlost Paint, ke kterΘ dojde v₧dy v okam₧iku p°ekreslenφ formulß°e. Pokud p°ekryjeme metodu OnPaint formulß°e, budeme moci zajistit, aby se p°i ka₧dΘm p°ekreslenφ plochy formulß°e uskuteΦnil jist² fragment programovΘho k≤du. AΦkoliv lze do p°ekrytΘ metody OnPaint umφstit jakΘkoliv platnΘ programovΘ instrukce, nejΦast∞ji se t∞lo tΘto p°ekrytΘ metody pou₧φvß pro modifikaci grafickΘ reprezentace formulß°e jako takovΘho. Jak jist∞ vφte, implicitn∞ je barva pozadφ formulß°e Üedß, ovÜem pokud p°ekryjeme metodu OnPaint tohoto formulß°e, m∙₧eme sami urΦit, jakou barvu pozadφ mß formulß° mφt.
Pro p°ekrytφ metody OnPaint formulß°e Form1 ud∞lejte nßsledovnφ:
Tip |
|
|
DialogovΘ okno Class View m∙₧ete zobrazit i
prost°ednictvφm klßvesovΘ zkratky CTRL+SHIFT+C. Okno Class View sdφlφ spoleΦn²
region s dalÜφmi okny (nap°. Solution Explorer Φi Resource View).á |
╖
Nßzev projektu
╖
Nßzev jmennΘho prostoru
╖
Form1
╖
Bases and Interfaces
╖
Form
Obr. 1 û Proces p°ekrytφ metody OnPaint
formulß°e
ááááááááááá protected
override void
OnPaint(PaintEventArgs e)
ááááááááááá {
ááááááááááááááááá // TODO:á Add Form1.OnPaint implementation
ááááááááááááááááá base.OnPaint
(e);
ááááááááááá }
ááááááááááá protected override void
OnPaint(PaintEventArgs e)
ááááááááááá {
ááááááááááááááááá //Vytvo°enφ novΘ instance struktury
System.Drawing.Rectangle.
ááááááááááááááááá Rectangle
GObdΘlnφk = new
Rectangle(new Point(0, 0),
ááááááááááááááááááááááá new Size(this.Width, this.Height));
ááááááááááááááááá //Vytvo°enφ novΘho grafickΘho Üt∞tce, kter² je sestaven
ááááááááááááááááá //ze t°φdy LinearGradientBrush.
ááááááááááááááááá LinearGradientBrush
Gèt∞tec = new
LinearGradientBrush(GObdΘlnφk,
ááááááááááááááááááááááá Color.Red, Color.Orange, LinearGradientMode.ForwardDiagonal);
ááááááááááááááááá
ááááááááááááááááá //Deklarace referenΦnφ prom∞nnΘ GObjekt,
do kterΘ je ulo₧en
ááááááááááááááááá //odkaz na objekt Graphics, jen₧ p°edstavuje plochu, na
kterou
ááááááááááááááááá //se bude kreslit. V naÜem p°φpad∞ jde o plochu aktußlnφ
instance
ááááááááááááááááá //t°φdy Form1.
ááááááááááááááááá Graphics
GObjekt = e.Graphics;
ááááááááááááááááá //Aplikace metody FillRectangle,
kterß mß na starosti prßce
ááááááááááááááááá //spojenΘ s vypln∞nφm plochy aktußlnφ instance t°φdy Form1
ááááááááááááááááá //gradientnφ v²plnφ.
ááááááááááááááááá GObjekt.FillRectangle(Gèt∞tec, GObdΘlnφk);
ááááááááááááááááá
ááááááááááááááááá //Uvoln∞nφ zdroj∙, kterΘ byly alokovßny p°φsluÜn²mi
grafick²mi
ááááááááááááááááá //objekty.
ááááááááááááááááá GObjekt.Dispose();
ááááááááááááááááá Gèt∞tec.Dispose();
ááááááááááááááááá //Volßnφ metody OnPaint bßzovΘ t°φdy. Bßzovou t°φdou
ááááááááááááááááá //je t°φda Control.
ááááááááááááááááá base.OnPaint (e);
ááááááááááá }
Obr. 2 û Zm∞na barvy pozadφ
formulß°e pomocφ p°ekrytφ metody OnPaint
Strukturovanß sprßva chyb v praxi
Pro mnoho programßtor∙ p°edstavuje problematika sprßvy a oÜet°ovßnφ chyb v jejich programech tΘma, kterΘ by vystaΦilo na opravdu dlouhou diskusi. Je nepopiratelnΘ, ₧e chyby se v softwarov²ch aplikacφch vyskytovaly, vyskytujφ a s velikou pravd∞podobnostφ se takΘ vyskytovat budou v i budoucφch etapßch v²voje programovßnφ. P°esto₧e je tato teze ryzφ skuteΦnostφ, snad na vÜech frontech se objevujφ zßstupy programßtor∙, kte°φ se pouÜt∞jφ do boje s virtußlnφmi chybami. Cφl je jasn²: Snφ₧it poΦet objeviteln²ch chyb na takovou mφru, kterß by byla p°φnosnß, a to jak pro programßtora, tak pro samotnΘho finßlnφho u₧ivatele. AΦkoliv nemßme v tuto chvφli dostateΦn² prostor na podrobnou charakteristiku filozofie chyb, jejich klasifikaci a specifikaci, ukß₧eme si, jakΘ novΘ zbran∞ pro boj s poΦφtaΦov²mi Üt∞nicemi nabφzφ platforma .NET Framework a pota₧mo i jazyk C#.
Zaklφnadlem dneÜnφch dn∙ se v rßmci programovßnφ na .NET ·rovni stßvß takzvanß strukturovanß sprßva chyb. Ihned ze zaΦßtku je zapot°ebφ zmφnit skuteΦnost, ₧e sprßva chyb je unifikovanß a peΦliv∞ implementovanß do vÜech programovacφch jazyk∙ pro prost°edφ .NET Framework. Tedy nejenom C#, ale takΘ Visual Basic .NET, Visual J# a °φzenΘ C++ obsahujφ mechanizmy, kterΘ dovolujφ relativn∞ snadnΘ a souΦasn∞ flexibilnφ äodchytßvßnφô chyb v softwarov²ch aplikacφch. SpoleΦnß chybovß politika nabφrß na v²znamu zejmΘna p°i programovßnφ ve vφce programovacφch jazycφch: Je nap°φklad mo₧nΘ generovat chybovou v²jimku z aplikace napsanΘ v C# a poslΘze äzachytitô tuto v²jimku t°eba v °φzenΘm C++ nebo ve Visual Basicu .NET.
Po formßlnφ strßnce je strukturovanß sprßva chyb v C# prezentovßna programovou konstrukcφ try-catch-finally. Obecn∞ lze p°i prßci s chybami postupovat pomocφ nßsledujφcφ struktury:
Poznßmka |
|
|
PoΦet blok∙ catch
vÜak zvyΦejn∞ zßvisφ od stylu, jak²m programßtor p°istupuje k procesu
oÜet°ovßnφ chyb. Tudφ₧ lze vytvo°it jenom jeden generick² blok catch a
vÜechny chybovΘ v²jimky, kterΘ budou generovßny, zpracovßvat podle jednotnΘho
scΘnß°e v rßmci jednoho bloku catch. V praxi se ovÜem urΦit∞
Φast∞ji st°etnete s p°φtomnostφ v∞tÜφho poΦtu catch blok∙. V tomto
p°φpad∞ m∙₧e ka₧d² blok zachytßvat jenom specifick² typ chybov²ch v²jimek. |
V nßsledujφcφ programovΘ ukßzce si p°edvedeme, jak pou₧φt strukturovanou sprßvu chyb v praxi. Vytvo°φme t°φdu, instance kterΘ budou slou₧it jako lokßlnφ prohlφ₧eΦe obrßzkov²ch soubor∙. T°φda bude obsahovat metodu ZaΦφtProhlφ₧enφ, kterΘ bude jako argument p°edßno pole textov²ch °et∞zc∙, p°edstavujφcφch cesty ke grafick²m soubor∙m, urΦen²m pro prohlφ₧enφ. Jestli₧e se na lokßlnφm pevnΘm disku nebudou nachßzet soubory s dan²m jmΘnem, dojde k vygenerovßnφ chybovΘ v²jimky. Tato v²jimka bude odchycena v p°φsluÜnΘm bloku Catch a takΘ pat°iΦn∞ oÜet°ena. Postupujte takto:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace cs_1_04_dob_01
{
áá /// <summary>
áá /// T°φda slou₧φ pro prohlφ₧enφ grafick²ch obrßzk∙.
áá /// </summary>
áá public class Prohlφ₧eΦObrßzk∙
áá {
áááááááá public
Prohlφ₧eΦObrßzk∙()
áááááááá {
áááááááááááááá //T∞lo
konstruktoru.
áááááááá }
áááááááá //Definice
metody ZaΦφtProhlφ₧enφ. VÜimn∞te si, ₧e metoda
áááááááá //pracuje s
polem textov²ch °et∞zc∙.
áááááááá public void ZaΦφtProhlφ₧enφ(string[]
pole)
áááááááá {
áááááááááááááá //Instantiace
objekt∙ t°φd Form a PictureBox.
áááááááááááááá Form frm = new Form();
áááááááááááááá PictureBox pict
= new PictureBox();
áááááááááááááá //ZaΦßtek
strukturovanΘ sprßvy chyb je identifikovßn
áááááááááááááá //klφΦov²m
slovem try, za kter²m se nachßzφ blok programovΘho
áááááááááááááá //k≤du,
jen₧ je ohraniΦen slo₧en²mi zßvorkami. VeÜker² k≤d,
áááááááááááááá //kter²
se nachßzφ uvnit° bloku try, je podroben strukturovanΘ
áááááááááááááá //sprßv∞
chyb. Dojde-li v k≤du v tomto bloku k chyb∞, bude
áááááááááááááá //generovßna
chybovß v²jimka.
áááááááááááááá try
áááááááááááááá {
áááááááááááááááááááá frm.Size = new Size(400, 300);
áááááááááááááááááááá frm.ControlBox
= false;
áááááááááááááááááááá frm.FormBorderStyle =
FormBorderStyle.FixedDialog;
áááááááááááááááááááá pict.Location
= new Point(0,0);
áááááááááááááááááááá pict.Size
= new Size(frm.Width, frm.Height);
áááááááááááááááááááá pict.SizeMode
= PictureBoxSizeMode.StretchImage;
áááááááááááááááááááá frm.Controls.Add(pict);
áááááááááááááááááááá frm.Show();
áááááááááááááááááááá //Obrßzky
jsou naΦteny v cyklu, p°iΦem₧ u₧ivatel mß
áááááááááááááááááááá //k
dispozici p°esn∞ dv∞ vte°iny, aby si obrßzek prohlΘdl.
áááááááááááááááááááá //Po
uplynutφ stanovenΘho ΦasovΘho intervalu je zobrazen
áááááááááááááááááááá //dalÜφ
dostupn² obrßzek.
áááááááááááááááááááá for
(byte a = 0; a <= pole.GetUpperBound(0);
a++)
áááááááááááááááááááá {
ááááááááááááááááááááááááá Image obr =
Image.FromFile(pole[a]);
ááááááááááááááááááááááááá pict.Image
= obr;
ááááááááááááááááááááááááá pict.Refresh();
ááááááááááááááááááááááááá System.Threading.Thread.Sleep(2000);
ááááááááááááááááááááááááá Application.DoEvents();
áááááááááááááááááááá }
áááááááááááááá //Konec
bloku try.
áááááááááááááá }
áááááááááááááá //Prvnφ
blok catch. Tento blok bude zapojen do Φinnosti
áááááááááááááá //v
p°φpad∞, jestli₧e bude v bloku try generovßna v²jimka
áááááááááááááá //typu
System.IO.FileNotFoundException. Abychom mohli vyu₧φt
áááááááááááááá //informace,
kterΘ si v²jimka s sebou nese, deklarujeme
áááááááááááááá //referenΦnφ
prom∞nnou x1.
áááááááááááááá catch
(System.IO.FileNotFoundException x1)
áááááááááááááá {
áááááááááááááááááááá //V²jimka
FileNotFoundException vznikß v okam₧iku, kdy
áááááááááááááááááááá //se
na disku nenachßzφ p°φsluÜn² soubor. V tomto p°φpad∞
áááááááááááááááááááá //zobrazφme
dialogovΘ okno se zprßvou, kterß bude u₧ivateli
áááááááááááááááááááá //oznamovat
vzniklou chybovou situaci spoleΦn∞ s nßzvem
áááááááááááááááááááá //chyb∞jφcφho
souboru.
áááááááááááááááááááá MessageBox.Show("Soubor
" + x1.Message + " nebyl nalezen.",
ááááááááááááááááááááááááá "Zprßva o chyb∞
za b∞hu programu",
ááááááááááááááááááááááááá MessageBoxButtons.OK,
MessageBoxIcon.Error);
áááááááááááááá }//Konec
prvnφho bloku catch.
áááááááááááááá //Druh²
blok catch. Zde budou zpracovßvßny vÜechny ostatnφ
áááááááááááááá //v²jimky,
krom∞ tΘ, se kterou se pracuje v prvnφm bloku catch.
áááááááááááááá catch
(System.Exception)
áááááááááááááá {
áááááááááááááááááááá //OÜet°enφ
vÜech ostatnφch v²jimek, ke kter²m m∙₧e dojφt.
áááááááááááááá }//Konec
druhΘho bloku catch.
áááááááááááááá //ZaΦßtek
bloku finally. Zde vlo₧φme vÜechny p°φkazy, kter²ch
áááááááááááááá //provedenφ
nenφ zßvislΘ na otßzce, zdali doÜlo k chyb∞ Φi nikoliv.
áááááááááááááá finally
áááááááááááááá {
áááááááááááááááááááá frm.Close();
áááááááááááááá }//Konec
bloku finally.
áááááááá }
áá }
}
ááááááááááá //Vytvo°enφ novΘ instance t°φdy Prohlφ₧eΦObrßzk∙.
ááááááááááá Prohlφ₧eΦObrßzk∙
x = new Prohlφ₧eΦObrßzk∙();
ááááááááááááááááá
ááááááááááá //Deklarace pole, kterΘ m∙₧e uchovat Φty°i textovΘ °et∞zce.
ááááááááááá string[] pole_x = new
string[4];
ááááááááááá //Napln∞nφ jednotliv²ch prvk∙ pole textov²mi °et∞zci.
ááááááááááá //Tyto °et∞zce p°edstavujφ pln∞ kvalifikovanΘ nßzvy
ááááááááááá //k cφlov²m soubor∙m s grafick²mi daty. JmΘna soubor∙ jsou
ááááááááááá //Obr1.png, Obr2.png atd., p°iΦem₧ vÜechny soubory jsou
ááááááááááá //ulo₧eny na lokßlnφm disku d.
ááááááááááá for(byte a = 0; a
< 4; a++)
ááááááááááááááá pole_x[a] = "d:\\obr"
+ (a+1) + ".png";
ááááááááááá //Aktivace metody ZaΦφtProhlφ₧enφ vytvo°enΘ instance.
ááááááááááá //Metod∞ je jako argument odevzdßno pole textov²ch °et∞zc∙.
ááááááááááá x.ZaΦφtProhlφ₧enφ(pole_x);
Volßnφ metody bßzovΘ t°φdy z odvozenΘ t°φdy
Aktivace metody bßzovΘ t°φdy z podt°φdy je velmi u₧iteΦnß technika, pomocφ kterΘ m∙₧ete ve vhodnΘ chvφli zavolat metodu bßzovΘ t°φdy, a to p°φmo z k≤du odvozenΘ t°φdy. Ka₧dß odvozenß t°φda m∙₧e vyu₧φvat vÜech dovednostφ, kterΘ nabφzφ jejφ bßzovß t°φda, a proto nenφ ani nejmenÜφm problΘmem aktivace p°φsluÜn²ch metod bßzovΘ t°φdy z prost°edφ odvozenΘ t°φdy. Abychom mohli zavolat metodu bßzovΘ t°φdy, pou₧ijeme v C# klφΦovΘ slovo base, za kter²m nßsleduje teΦkov² operßtor (.) a nßzev metody bßzovΘ t°φdy, kterou chceme aktivovat:
base.CφlovßMetodaBßzovΘT°φdy
Vφce informacφ p°inßÜφ nßsledujφcφ programovß ukßzka (je uveden v²pis celΘ t°φdy):
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace cs_1_04_dob_01
{
ááááá //Definice t°φdy
A1.
ááááá public class A1
ááááá {áááá
ááááááááááá //Definice
ve°ejnΘ virtußlnφ metody.
ááááááááááá public
virtual void
SpustitPoÜtovnφhoKlienta()
ááááááááááá {
ááááááááááááááááá //Aktivace
metody Start t°φdy Process z jmennΘho prostoru
ááááááááááááááááá //System.Diagnostics.
V²sledkem prßce metody je spuÜt∞nφ
ááááááááááááááááá //poÜtovnφho
klienta.
ááááááááááááááááá Process.Start("mailto:hanja@stonline.sk");
ááááááááááá }
ááááá }
ááááá //Definice t°φdy
B1 jako podt°φdy bßzovΘ t°φdy A1.
ááááá public class B1 : A1
ááááá {
ááááááááááá //Definice
metody, kterß p°ekr²vß metodu bßzovΘ t°φdy.
ááááááááááá //Z tΘto
p°ekrytΘ metody bude pomocφ klφΦovΘho slova base
ááááááááááá //volßna
metoda bßzovΘ t°φdy.
ááááááááááá public
override void
SpustitPoÜtovnφhoKlienta()
ááááááááááá {
ááááááááááááááááá //Minimalizace
aktivnφ instance t°φdy Form.
ááááááááááááááááá Form.ActiveForm.WindowState = FormWindowState.Minimized;
ááááááááááááááááá //Aktivace
metody bßzovΘ t°φdy pomocφ klφΦovΘho slova base,
ááááááááááááááááá //teΦkovΘho
operßtoru a nßzvu cφlovΘ metody.
ááááááááááááááááá base.SpustitPoÜtovnφhoKlienta();
ááááááááááá }
ááááá }
}
V²pis k≤du pracuje se dv∞ma t°φdami: A1 a B1. T°φda A1 obsahuje ve°ejnou virtußlnφ metodu SpustitPoÜtovnφhoKlienta. Je-li tato metoda aktivovßna, dochßzφ k nastartovßnφ aplikace, kterß je na cφlovΘm poΦφtaΦovΘm systΘmu nakonfigurovßna jako poÜtovnφ klient. T°φda B1 je odvozenß od t°φdy A1, p°iΦem₧ v p°ekrytΘ variant∞ metody SpustitPoÜtovnφhoKlienta je volßna metoda bßzovΘ t°φdy A1.
|
Prßv∞ jste doΦetli Dobrodru₧stvφ
v C#. Pokud se chcete
dozv∞d∞t vφce informacφ o programovßnφ v C#, nevßhejte a navÜtivte i dalÜφ
souΦßstφ rubriky Visual C# .NET: ZaΦφnßme s jazykem C# - Serißl je urΦen p°edevÜφm zßjemc∙m o studium
zßkladnφch a pokroΦil²ch programovacφch prvk∙ v jazyku C#. Jestli₧e se
chcete zaΦφt uΦit programovat prßv∞ v jazyku C#, nebo pat°φte-li
k programßtor∙m, kte°φ p°echßzejφ z prost°edφ jinΘho programovacφho
jazyka, naleznete v jednotliv²ch dφlech serißlu vÜe, co budete
pot°ebovat ke snadnΘmu zvlßdnutφ jazyka C#.
Otßzky a odpov∞di
û
Trßpφ-li vßs n∞jak² programßtorsk² problΘm, na jeho₧ °eÜenφ ne a ne p°ijφt,
pak jste na sprßvnΘm mφst∞. U Φtenß°∙ oblφbenß forma °eÜenφ potφ₧φ stylem
otßzek a odpov∞dφ si naÜla sv∙j prostor i v naÜφ rubrice. Mßte-li
problΘm, s kter²m nevφte hnout, poÜlete jeho popis autorovi rubriky, jen₧
vyvine maximßlnφ ·silφ pro rychlΘ vy°eÜenφ jakΘkoli programßtorskΘ zßhady. |
|
Autor: Jßn Hanßk |