Kezdőlap > Windows7 > Windows 7 – A dialógus nem a régi már

Windows 7 – A dialógus nem a régi már

2010. május 5. szerda Hozzászólás Go to comments

A Start Solution innen tölthető le.

Már a Windows Vista-tól kezdve használhatóak az új dialógusok. Eddig ugyanis csak egy sovány messageboxunk volt, ami azon kívül, hogy üzenetet jelenített meg, nem sok mindenre volt használható. A Windows Vista -tól viszont a dialógusainkat testre tudjuk szabni, és akár egyéb control-okat, parancsokat is definiálhatunk bennük. Igaz kicsit körülményesebb, mint egy egyszerű dialógus definiálása és meghívása, de többet is nyújt mind a fejlesztők mind a felhasználók számára.

Az új dialógusok bemutatásához egy új menüponttal látjuk el media playert. Az információ menüre kattintva egy dialógusban leírjuk, hogy az adott fájl milyen paraméterekkel rendelkezik, (méret, név, kiterjesztés stb.) majd ellátjuk a dialógust egy progressbarral és egy Pause menüponttal is, csak hogy lássuk, mennyire testre lehet szabni ezeket az új dialógusokat.

1.      Navigáljunk a btnInformation_Click esemény törzséhez

2.      Adjuk hozzá az alábbi kódsorokat. (Task- 5.1)

TaskDialog taskDlg = new TaskDialog();

taskDlg.Cancelable = true;

taskDlg.Caption = "Információk";

taskDlg.Icon = TaskDialogStandardIcon.Information;

taskDlg.FooterText = "Windows 7 – Videó Infromációk";

taskDlg.InstructionText = "Videó Infromációs sáv";

taskDlg.StartupLocation = TaskDialogStartupLocation.CenterScreen;

taskDlg.Text = String.Format("Fájl név: {0}nKiterjesztés {1}nMéret: {2} byte", fi.Name, fi.Extension, fi.Length);

taskDlg.DetailsExpanded = false;

taskDlg.DetailsExpandedText = String.Format("Készítés dátuma: {0}nUtolsó hozzáférés dátuma: {1}", fi.CreationTime, fi.LastAccessTime);

 

taskDlg.Show();

 

Itt mindösszesen annyit teszünk, hogy példányosítunk egy TaskDialogot. Megadjuk számára, hogy milyen legyen a fejléce, ikonja, lábléce, indítási pozíciója stb.

Hogy legyen is valami tartalma ezért a Text tulajdonságát feltöltjük a fájl legfontosabb információival. Az egzotikusabb tulajdonságait pedig a DetailsExpandedText -hez írjuk oda. Így ha valaki kíváncsi a kevésbé relevánsabb készítés dátuma, utolsó hozzáférés információkra akkor egy lenyíló menüben tekintheti meg.  Látható, hogy rengeteg tulajadonságot testre tudjuk szabni ennél dialógusnál, és a használata is nagyon kényelmes.

3.      Fordítsuk le az alkalmazást (Ctrl+Shift+B) és indítsuk el (F5)

4.      Töltsünk be egy fájlt.

5.      Kattintsunk az Információ gombra. Ekkor a vártnál ellentétben az alábbi NotSupportedException-t kapjuk.

image

6.      Ahhoz, hogy ezt a problémát kiküszöböljük, a Projectünkhöz hozzá kell adnunk egy manifest fájlt.

7.      Állítsuk le az épp futó programot, ha még nem tettük volna meg.

8.      A Solution Explorerben kattintsunk az app.manifest fájlra (Application Manifes File) és töltsük be.

9.      A manifest fájlhoz adjuk hozzá az alábbi sorokat, az assemblyIdentity element alá.

  <dependency>

    <dependentAssembly>

      <assemblyIdentity

          type="win32"

          name="Microsoft.Windows.Common-Controls"

          version="6.0.0.0"

          processorArchitecture="*"

          publicKeyToken="6595b64144ccf1df"

          language="*"

        />

    </dependentAssembly>

  </dependency>

A manifest fájl egyéb információkat is tartalmaz. Ezekkel a tutorial későbbi részében fogunk foglalkozni.

10.   Fordítsuk újra az alkalmazást és indítsuk el.

11.  Töltsünk be egy fájlt, és kattintsunk az információ gombra. Ekkor már meg fog jelenni az egyedi TaskDialogusunk. De ne gondoljuk, hogy csak ennyit tud ez a dialógus. Különböző controlokat, parancsokat is elhelyezhetünk benne, erre fogunk most példát látni.

12.  Zárjuk be az alkalmazást, és térjünk vissza a btnInformation_Click eseményhez.

13.  Navigáljunk a taskDlg.Show() –hoz és közvetlen elé helyezzük el az alábbi kódsorokat.
(A taskDlg.Show csak egyszer szerepeljen!)

TaskDialogProgressBar progressBar = new TaskDialogProgressBar();

progressBar.State = TaskDialogProgressBarState.Normal;

progressBar.Maximum = (int)sliderTime.Maximum;

progressBar.Value = (int)sliderTime.Value;

taskDlg.Controls.Add(progressBar);

 

taskDlg.Show();

 

Az előző dialógust itt kiegészítjük annyival, hogy hozzáadunk egy progressbart, aminek az értéke a TimeLine aktuális értéke. A példányosítás után ezt a controlt, hozzáadjuk a TaskDialog Control gyűjteményéhez. Ekkor, ha elindítanánk az alkalmazást már megjelenne a progressbar a dialógusban.

 

14.   Folytassuk tovább a példát azzal, hogy még egy parancsot is hozzáadunk a TaskDialógusunkhoz.  Adjuk hozzá az alábbi kódosokat taskDlg.Show() –hoz elé. (A taskDlg.Show csak egyszer szerepeljen!)

TaskDialogCommandLink pause = new TaskDialogCommandLink("lnkPause", "Pause");

pause.ShowElevationIcon = true;

pause.Click += new EventHandler(pause_Click);

taskDlg.Controls.Add(pause);

taskDlg.Show();

 

Mint látható itt egy TaskDialogCommandLink-et példányosítottunk, amit szintén hozzáadtunk a TaskDialog Control gyűjteményéhez. Ami viszont fontosabb, hogy ennek a dialógusnak a Click eseményére feliratkoztunk. (Ne feledjük a += 2x Tab és az esemény legenerálódik)

 

15.   A Pause Click eseményében egyszerűen hívjuk meg a Pause metódust. (Task -5.2)

void pause_Click(object sender, EventArgs e)

{

    this.Pause();

}

16.  Fordítsuk le az alkalmazást (Ctrl+Shift+B) és indítsuk el (F5)

17.  Töltsünk be egy videó fájlt, és indítsuk el. Majd kattintsunk az információ gombra. Ekkor már az alábbi TaskDialog fog fogadni.

image

Advertisements
Kategóriák:Windows7
  1. Még nincs hozzászólás.
  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: