Reklama

C# – Tipy, rady, návody – 17: Přetažení a použití objektu pomocí myši

Úvod

V dalším tipu pro programovací jazyk C# se zaměříme na to, jak pomocí myši “přetáhnout a použít” nějaký objekt. Určitě to znáte. Máte například některý grafický editor a místo využití volby “otevřít” prostě myší uchopíte v průzkumníku daný obrázek a přetáhnete ho do okna editoru, kde se obrázek otevře. Zde je k jednoduché demonstraci funkce uveden příklad na zkopírování textu do ovládacího prvku “TextBox”.

Popis

Výsledná vzorová aplikace bude obsahovat pouze jeden ovládací prvek a to “TextBox”, viz Obr. 1.
 
Obr. 1: Vzorová aplikace

Obr. 1: Vzorová aplikace

 

Jako první musíme u ovládacího prvku “TextBox” nastavit vlastnosti “AllowDrop” a “MultiLine” na “true”. První vlastností povolíme u prvku možnost funkce přetažení obsahu pomocí myši a druhou vlastností povolíme možnost zobrazit více řádku . Dále u ovládacího prvku “TextBox” použijeme dvě události a to: “DragEnter” a “DragDrop”. První událost “DragEnter” se vykoná, pokud najedeme myší s obsahem na ovládací prvek. Proto je vhodné do této metody vložit kód k testování obsahu, přiřazení akce apod. Vzorový zdrojový kód lze vidět níže.

 

001: private void textBox1_DragEnter(object sender, DragEventArgs e)
002: {
003: // zjisteni, zda se jedna o text
004: if (e.Data.GetDataPresent(DataFormats.Text))
005: {
006: // pokud ano, tak nasledne zkopiruj objekt
007: e.Effect = DragDropEffects.Copy;
008: }
009: else
010: {
011: // pokud ne, tak neprovadet zadnou akci
012: e.Effect = DragDropEffects.None;
013: }
014: }

 

Druhá událost “DragDrop” se provede, pokud byla nastavena nějaká akce po přetažení. Zde je provedeno pouze přidání přetaženého textu do ovládacího prvku “TextBox”, viz níže.

 

001: private void textBox1_DragDrop(object sender, DragEventArgs e)
002: {
003: // pridani noveho textu
004: textBox1.Text = textBox1.Text + e.Data.GetData(DataFormats.UnicodeText).ToString();
005: }

 

Otestování zdrojového kódu bylo provedeno na kopírování textu z internetové stránky, viz Obr. 2.

 
Obr. 2: Výsledné přetažení textu z internetové stránky

Obr. 2: Výsledné přetažení textu z internetové stránky

 

Dále lze využít události:
DragLeave – Událost je vykonaná při opuštění objektu kurzorem, pokud nebyla vyvolaná žádná akce.
DragOver – Událost se vykonává neustále.

 

[1] Microsoft Developer Network. How to: Enable Drag-and-Drop Operations with the Windows Forms RichTextBox Control. [online] citováno 3. října 2015. Dostupné na www: https://msdn.microsoft.com/cs-cz/library/fkw1hc6t(v=VS.110).aspx
Následující a předchozí příspěvek v kategorii:

 
Předchozí: C# – Tipy, rady, návody – 16: Automatické posunutí na konec textu v TextBoxu
 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.