Benutzer mit den meisten Antworten
Dauerhafte Tastenkombination abfrage + Taskleisten Popup anzeigen

Frage
-
Hey Zusammen,
mein Ziel ist es, bei einer bestimmten Tastenkombination, wie zB. STRG+S, unten rechts ein "Popup" Anzeigen zu lassen. Dieses "Popup" soll allerdings keine einfache Meldung sein, sondern eine Eingabe ermöglichen, die zur Weiterverarbeitung genutzt werden kann.
Hat hierzu jemand eine Idee wie ich das am besten realisieren kann ?
Das ganze soll als Zusatzfunktion in einem gröseren Programm genutzt werden. (Programm ist in C# und WPF realisiert)
Schon Einmal Vielen Dank.
Erik
Antworten
-
Hallo,
da du WPF benutzt würde ich sagen, das du einfach ein 2. Fenster erstellst und dieses unten rechts positionierst.Erstelle hierzu ein Fenster und passe das Layout entspürechend an. Als Beispiel:
<Window x:Class="WpfApplication32.TrayWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="TrayWindow" Height="82" Width="263" AllowsTransparency="True" ResizeMode="NoResize" WindowStyle="None" Background="Transparent"> <Border BorderBrush="Wheat" BorderThickness="4" CornerRadius="10" Background="White"> <Grid > <Label Content="Bitte einen Wert eingeben:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/> <TextBox Height="23" Margin="10,41,58,0" TextWrapping="Wrap" VerticalAlignment="Top"/> <Button Content="OK" HorizontalAlignment="Right" Margin="0,41,10,0" VerticalAlignment="Top" Width="43" Height="23" Click="Button_Click"/> </Grid> </Border> </Window>
Nun brauchen wir die Bildschirmgröße. Füge dazu Verweise auf folgende Assemblies hinzu:
- System.Drawing
- System.Windows.Forms
Diese stellen die Screen-Klasse bereit. Mit dieser kommen wir nun an die Größe heran. Jetzt brauchst du nurnoch das Fenster instanzieren und die Position zuweisen sowie anzeigen:
TrayWindow wnd = new TrayWindow(); var screen = wf.Screen.PrimaryScreen.WorkingArea;//Der Bereich des primären Monitors ohne Taskleiste usw. wnd.Left = screen.Width - wnd.Width - 10;//Linke Koordinate wnd.Top = screen.Height - wnd.Height - 10;//Obere Koordinate wnd.Show();
Das Fenster erscheint immer unten rechts über der Uhr.
Weitere Links:
Screen Klasse
Window.DragMove Methode
PS: Zur Tastenkombination. Meinst du das Windowsweit oder nur im Programm? Ich gehe mal vom Programm aus. Das geht einfach mit Commands ein Beispiel findest du hier. Im Handler musst du dann nurnoch das Fenster aufrufen.
Wenn du es doch global haben willst, dann gucke mal hier. Dort versuchen wir das gerade zum laufen zu bekommen.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 8. Januar 2014 14:29 PS
- Als Antwort markiert Erik_SSSSSS Montag, 13. Januar 2014 06:48
Alle Antworten
-
Hallo,
da du WPF benutzt würde ich sagen, das du einfach ein 2. Fenster erstellst und dieses unten rechts positionierst.Erstelle hierzu ein Fenster und passe das Layout entspürechend an. Als Beispiel:
<Window x:Class="WpfApplication32.TrayWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="TrayWindow" Height="82" Width="263" AllowsTransparency="True" ResizeMode="NoResize" WindowStyle="None" Background="Transparent"> <Border BorderBrush="Wheat" BorderThickness="4" CornerRadius="10" Background="White"> <Grid > <Label Content="Bitte einen Wert eingeben:" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/> <TextBox Height="23" Margin="10,41,58,0" TextWrapping="Wrap" VerticalAlignment="Top"/> <Button Content="OK" HorizontalAlignment="Right" Margin="0,41,10,0" VerticalAlignment="Top" Width="43" Height="23" Click="Button_Click"/> </Grid> </Border> </Window>
Nun brauchen wir die Bildschirmgröße. Füge dazu Verweise auf folgende Assemblies hinzu:
- System.Drawing
- System.Windows.Forms
Diese stellen die Screen-Klasse bereit. Mit dieser kommen wir nun an die Größe heran. Jetzt brauchst du nurnoch das Fenster instanzieren und die Position zuweisen sowie anzeigen:
TrayWindow wnd = new TrayWindow(); var screen = wf.Screen.PrimaryScreen.WorkingArea;//Der Bereich des primären Monitors ohne Taskleiste usw. wnd.Left = screen.Width - wnd.Width - 10;//Linke Koordinate wnd.Top = screen.Height - wnd.Height - 10;//Obere Koordinate wnd.Show();
Das Fenster erscheint immer unten rechts über der Uhr.
Weitere Links:
Screen Klasse
Window.DragMove Methode
PS: Zur Tastenkombination. Meinst du das Windowsweit oder nur im Programm? Ich gehe mal vom Programm aus. Das geht einfach mit Commands ein Beispiel findest du hier. Im Handler musst du dann nurnoch das Fenster aufrufen.
Wenn du es doch global haben willst, dann gucke mal hier. Dort versuchen wir das gerade zum laufen zu bekommen.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller)Moderator Mittwoch, 8. Januar 2014 14:29 PS
- Als Antwort markiert Erik_SSSSSS Montag, 13. Januar 2014 06:48
-
Hi Erik,
Hat Dir die Antwort von Tom geholfen ? Wenn ja - bitte markiere diese "als Antwort".
Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.