MultiSlot Urklipp (8 / 9 steg)

Steg 8: Kodning händelserna

I detta steg måste vi fylla i koden för händelserna av knapparna

och ListView. Dessa händelser är generiska, vilket innebär att alla dynamiskt genererade kontroller kommer att kalla dessa händelser. Så, för att veta vilken slot kallas evenemanget vi läser egenskapen Tag av kontroll, som innehåller korrekt index för array-aClipboardSlotData.

Låt oss börja med den händelse som hanterar dubbel klick på ListView. När användaren dubbelklickar på en ListViewItem bör vi Visa en meddelanderuta med innehåll av de valda elementen.

Om SelectedIndex för egenskapen ListView är större än -1 Detta innebär att en artikel valdes ut och vi kommer att använda värdet för den här egenskapen som ett index för matrisen som lagrar urklippsdata (aClipboardSlotData). Följande kod visar innehållet i lstData_MouseDoubleClick() delegatmetod.

void lstData_MouseDoubleClick (objekt avsändare, MouseButtonEventArgs e)

{

ListView v = (listvy) avsändaren.

heltal index = Convert.ToInt32(v.Tag);

om (v.SelectedIndex! = -1)

MessageBox.Show (aClipboadSlotData [index]. ElementAt(v.SelectedIndex). ToString());

}

Den nästa delegatmetod måste vi skapa är den händelse som hanterar den klickar du på knappen Kopiera. Denna delegatmetod kallas Copy_Click() och vi måste först få aktiv kod-fönstret med GetActiveView()-metoden skapas på steg 6 och kontrollera om vyn är rätta.

Därefter måste vi läsa den aktuella markerade texten med metoden GetTextForPastie() som skapades också på steg 6. När vi får texten måste vi kontrollera om den är tom.

Om den markerade texten inte är tom, måste vi infoga det på array aClipboardSlotData. Vi utför denna kortisättning i en ny metod som kallas InsertDataHistory(). Slutligen måste vi uppdatera ListView med en annan ny metod som kallas AccomodateDataListView(). Men först ska vi se koden för Copy_Click() delegera metod.

void Copy_Click (objekt avsändare, RoutedEventArgs e)

{

heltal index = Convert.ToInt32(((Button)sender). Tag);

Visa = GetActiveTextView();

om (! () This.View == null || MultiSlotClipboardPackage.thePackage.Dte.ActiveDocument == null))

{

String sData = GetTextForPastie(view);

om (sData! = "")

{

InsertDataHistory (index, sData);

AccomodateDataListView(index);

}

}

}

Copy_Click() startar genom att läsa värdet för egenskapen Tag om knappen som klickade. Den här egenskapen innehåller det index som vi ska använda som slot nummer. Nästa vi anropa metoden GetActiveTextView() och kontrollera returvärdet för att se om vi fått det rätta fönstret.

Följande rader med kod får den markerade texten med metoden GetTextForPastie(). Vi kontrollerar sedan om det finns någon markerad text och så vi kallar metoden InsertDataHistory() för att infoga data i matrisen aClipboardSlotData. Slutligen, vi ändra elementen i ListView med metoden AccomodateDataListView().

Metoden InsertDataHistory() har ett enkelt jobb. Först får den index för Urklipp facket och den markerade texten. Då ska sätta in den markerade texten på den första positionen i aClipboardSlotData matrisen, som bör fungera som en stack eller LIFO datastruktur (http://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29).

Istället för att genomföra en datastruktur som stack från början vi bara skapa en ny lista och infoga markerad textvärdet som skickas som en parameter i dess första position. Därefter färdas vi befintliga aClipboardSlotData matrisen start från det andra elementet och infoga data på den nya skapat lista. Slutligen, åsidosätter vi den befintliga listan på aClipboardSlotData med det vi just skapat. Följande kod visar hur dessa operationer utförs.

privata void InsertDataHistory (int indexSlot, sträng sData)

{

Lista list_temp = ny List();

list_temp. Infoga (0, sData);

för (int jag = 0; jag < aClipboadSlotData [indexSlot]. Greven - 1. i ++)

{

list_temp. Infoga (jag + 1, aClipboadSlotData [indexSlot]. ElementAt(i). ToString());

}

aClipboadSlotData [indexSlot]. RemoveRange (0, aClipboadSlotData [indexSlot]. Count);

aClipboadSlotData [indexSlot]. InsertRange (0, list_temp);

hemkomst.

}

Nu när vi förde in den markerade texten på rätt position i listan som finns inuti matrisen aClipboardSlotData måste vi uppdatera elementen i ListView. Vi gör det inuti AccomodateDataListView() metoden som får index i matrisen som en parameter.

AccomodateDataListView() är enkelt: vi radera alla ListViewItem element och införas nya i listan som finns inuti aClipboardSlotData. Vi se bara till att infoga bara 15 tecken i varje text att undvika klippa texten. Slutligen, vi be om en uppdatering på UI och välj det första elementet i ListView.

privata void AccomodateDataListView (int indexSlot)

{

ListView v = (listvy) aGroupGrids [indexSlot]. Barn [2].

v.Items.Clear();

foreach (sträng s i aClipboadSlotData[indexSlot])

{

om (! s.Equals(""))

{

om (s.Length > 15)

v.Items.Add (s.Substring (0, 15));

annat

v.Items.Add(s);

}

}

v.Items.Refresh();

v.SelectedIndex = 0;

}

Vi är nästan klar. Vi måste skapa koden för de händelser som hanterar Klicka i snittet och klistra in knapparna. Händelsen för knappen Cut är nästan samma som knappen Kopiera: den enda skillnaden är att efter får vi den markerade texten vi måste radera texten som väljs från koden fönstret och ta bort den textmarkeringen.

Om du vill radera den markerade texten måste vi använda de objekt som implementerar gränssnittet ITextEdit. Vi får detta objekt från metoden CreateEdit() i egenskapen TextBuffer finns på Visa variabeln som representerar den aktuella vyn kod redaktör. När vi får objektet ITextEdit använder vi metoden Delete() radera tecken och metoden Apply() för att ändra texten. Slutligen, vi tar bort markeringen med förloppsindikatorförekomstens metoden för egenskapen urval av vyn.

Men det finns en hake när vi använder metoden Delete(): vi måste ge den plats vi vill börja ta bort tecken och hur många tecken vi behöver ta bort. För att få positionen för den aktuella markeringen använder vi egenskapen Position från egenskapen Selection.Start, som representerar den start plats där markeringen börjar. På liknande sätt använder vi egenskapen Selection.End för att få exakta heltal positionen för slutet av markeringen. Koden för metoden delegat Cut_Click() visas nedan.

void Cut_Click (objekt avsändare, RoutedEventArgs e)

{

heltal index = Convert.ToInt32(((Button)sender). Tag);

Visa = GetActiveTextView();

om (! () This.View == null || MultiSlotClipboardPackage.thePackage.Dte.ActiveDocument == null))

{

String sData = GetTextForPastie(view);

om (sData! = "")

{

InsertDataHistory (index, sData);

AccomodateDataListView(index);

Microsoft.VisualStudio.Text.ITextEdit Redigera = Visa. TextBuffer.CreateEdit();

Redigera. Ta bort (vyn. Selection.Start.Position.Position, Visa. Selection.End.Position.Position - Visa. Selection.Start.Position.Position);

Redigera. Apply();

Visa. Selection.Clear();

}

}

}

Den slutliga delegatmetod vi måste skapa är den som hanterar händelsen klickning på knappen Klistra in. Innan vi skapar denna metod måste vi dock först utveckla ett sätt att extrahera text-elementet från array aClipboardSlotData, som är den datastruktur som lagrar slots och deras historia.

Den nya metoden som utvinner texten från en slot historia kallas getSelectedItem() och den får index för facket som en parameter. Den här metoden måste returnera datavärde från den slot historia som motsvarar till det markerade objektet på ListView. Om inget objekt är markerad på ListView bör metoden returnera det första elementet i ListView.

GetSelectedItem() första uppgift är att få motsvarande ListView med index och aGroupGrids utbud. Nästa, metoden kontrollerar om erhållna ListView är tom och om det inte är SelectedIndex-egenskapen används med arrayen aClipboardSlodData för att få elementet från den rätt platsen och rätt historia ställning.

privata sträng getSelectedItem (int indexSlot)

{

Sträng ret = "";

ListView v = (listvy) aGroupGrids [indexSlot]. Barn [2].

om (v.Items.Count > 0)

{

om (v.SelectedIndex > = 0)

{

ret = aClipboadSlotData [indexSlot]. ElementAt(v.SelectedIndex). ToString();

}

annat

ret = aClipboadSlotData [indexSlot]. ElementAt(0). ToString();

}

återvändande ret;

}

Slutligen är den sista biten av kod måste vi genomföra den delegatmetod som hantera genom att klicka på knappen Klistra in. Metoden Paste_Click() först få nuvarande Visa med hjälp av GetActiveTextView() och kontrollera om den aktuella vyn kod editor, precis som den Copy_Click() och Cut_Click() delegera metoder. Metoden anropar sedan getSelectedItem() skickas som en parameter index värderas erhålls från egenskapen Tag om knappen som klickade.

Om det finns några uppgifter om motsvarande historia och slot position, måste denna text infogas i den aktuella markörpositionen (cirkumflex). Om du vill infoga textvärdet i exakta markörens position använder vi igen det objekt som implementerar gränssnittet ITextEdit erhålls från metoden CreateEdit() för egenskapen TextBuffer, precis som vi gjorde på metoden Cut händelse. Men här ska vi använda metoden Insert() istället för Delete() och ge nuvarande carret position erhållits från egenskapen Position för egenskapen Caret.Position.BufferPostion för objektet vy. Den sista pusselbiten i koden för detta Instructable är show nedan

void Paste_Click (objekt avsändare, RoutedEventArgs e)

{

heltal index = Convert.ToInt32(((Button)sender). Tag);

Visa = GetActiveTextView();

om (! () This.View == null || MultiSlotClipboardPackage.thePackage.Dte.ActiveDocument == null))

{

String sData = getSelectedItem(index);

om (! sData.Equals(""))

{

Microsoft.VisualStudio.Text.ITextEdit Redigera = Visa. TextBuffer.CreateEdit();

Redigera. Infoga (vy. Caret.Position.BufferPosition.Position, sData);

Redigera. Apply();

}

}

}

Se Steg
Relaterade Ämnen

Urklipp kommunikation PC ↔ Pi med Python

Jag använda brukar min hallon-Pi på en delad windows-skrivbordet. Jag delar också en nätverksenhet med Pi. Detta är bra, men jag har fortfarande irritationen i Urklipp på datorn inte kommer till uttryck på Pi. Det kan vara plattformsoberoende apps ut...

Smartphone Urklipp

Smartphones är fantastiska för många användningsområden förutom att det är huvudsakliga användningen som en telefon. Som student på en föreläsning, med praktiskt taget ingen plats för din telefon, fungerar detta Urklipp fantastiskt! Med alla bra prog...

Urklipp från stora klipp

Detta är vad din slutliga styrelse kommer att se ut.Steg 1: Samla delar och verktygDu behöver en (planka) styrelse, jag använde enkla ply 7 x 35 mm x225 (men 5 mm eller ens 3 mm tjocklek skulle fungera).lista över delarstyrelsen stora nog att hantera...

Mus fälla Urklipp

Skapa en helt billigt Urklipp praktiskt taget var som helst med denna smarta mus fälla Urklipp. Ta några mus fölen, tång och en oscillerande verktyg (jag använde en Dremel multi Max) med infälld skurna blad.Steg 1: Få dina leveranserJag plockade upp...

InstaMorph A Urklipp!

Hej gott folk!Omaha Maker gruppen är tillbaka med en annan stor Instructable, denna gång som en del av April bygga natten med InstaMorph!För detta projekt hade en av våra medlemmar en Lagring Urklipp som han använder för att ta anteckningar i fältet...

Urklipp för vänster räckte människor

om du är vänsterhänt, vet du hur svårt det är att skriva en Urklipp. Klippet, även på en låg profil Urklipp liknande den som visas här, är i vägen för din hand hela tiden.Steg 1: En möjlighet Är det nästan omöjligt att skriva nära toppen av papperet...

VÄRLDENS ENKLASTE KONST URKLIPP!

En frekvent låda, jag som använder 9 "x 12" papper jag får från min lokala tryckeri. Det enda problemet är täcker inte passar någon klippborden för portabilitet...... om detta ett jag gjort själv.För verktyg du kan räkna på en hand och nr pengar...

Urklipp pennhållare

anpassa Urklipp med en funktionell pennhållare. Att göra detta är snabbt, Billigt och enkelt! Resultatet är mycket effektiv. Jag använder min vardag.Steg 1: Vad du behöver. (Jag tänker INXS) Som med många av mina instructables, detta inte tar mycket....

Kolfiber Urklipp

jag arbetar för ett företag som gör sammansatta delar för flygindustrin. Varje så ofta stött jag på laminat tillverkade av kolfiber eller glasfiber. Kändes som det var synd att låta dessa bitar som går till spillo, så jag började leta efter ett prakt...

Urklipp snabb n' lätt

Några minuter sedan jag bestämde mig för jag ska dra en snabb Schematisk av min senaste kretsdesign. Jag tänkte, "Jösses, jag önskar jag hade en Urklipp ska sätta ett blad för att skriva papper på så jag kunde dra detta med viss grad av stabilitet.&q...

Sugru pennhållare (till Urklipp)

Du behöver:ett urklippSugruen pennaSteg 1: Dela Sugru, avgör placering Vi använde fyra stycken, för att placera ovanför och under pennan i fyra ställen. Du kan förmodligen använda två stora bitar, eller tre små... Vad passar dig bäst!Besluta om Urkli...

Hur man gör en mini Urklipp

detta är en pocket sized Urklipp att ta lite anteckningar på.Steg 1: levererar. du behöver,2 brickor, 1 bult,1 bult,1 förpackning med post den anteckningar,1 bit av en laminat kakel,och 1 mini klipp.Steg 2: att sätta den toegether nu tar din kakel. s...

Harry Potter Urklipp

Denna lätt tutorial ska show dig hur man anpassar du Urklipp.Steg 1: materialDu behöver:Rött och guld papperEtt urklippSaxLimSteg 2: Lejonet Först, du kommer att behöva skriva ut och klippa ut en silhuett för Gryffindor lejonet.Steg 3: Spårning och s...

Urklipp

Som en del av min eviga strävan att organisera varje aspekt av mitt jordeliv, bestämde jag mig för jag behövde ett system för spårning av kundorder i verkstaden. Mitt minne tenderar att misslyckas mig ganska ofta nuförtiden, så jag har blivit ett sto...

3D-modellering och skriva ut din egen skugga kub

En initialer skugga kub är en kub där varje vy av kuben (överst, front och sida-vy) är profilen av en annan bokstav. Detta kommer från boken Gödel, Escher, Bach, av Douglas Hofstadter. En skugga kub är en riktigt trevlig grundläggande 3D design utman...

Skapa en illustrerade eBook

efter att ha läst otaliga berättelser till min unga tvillingpojkar jag gillade tanken på att kunna läsa dem en bok deras pappa hade skrivit. Skapa en bok också kändes som ett roligt, kreativt projekt. Efter kommer upp med en idé och skriva ut jag var...

Dodecahedron kalender - 2 sida - anpassningsbara

Av alla jag har tittat på, verkar det bara inte vara någon en kalendersom med alla alternativ jag har i åtanke:-Semester (eller texten, bilderna, designer för att förstora)-en enkel okomplicerad, lätt uppdatering-kunna mall-Plats för fler-Två sida fö...

QR koden kärlek Obs Needlepoint

äkta Geek kärlek hjärtans present!Steg 1: leveranser 1 - cross stitch material2 - virka tråd3 - stora ögon nål4 - broderi hoop5 - fyrkantig ramAlla stygn räknar och storlek av material beror på storleken av ram som används. Jag hittade en 10 "x 10&qu...

Den ultimata nördiga personliga presenten - gör ett korsstygn QR kod

jag gjorde detta som en present till min syster i jul. QR-kod, när skannas på en smartphone, leder till en video på YouTube - ett bildspel av barndom jul bilder.Det tog inte alltför lång tid att göra och hon älskade det, som det var något lite mer pe...