none
Dauerhafte Tastenkombination abfrage + Taskleisten Popup anzeigen RRS feed

  • 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

    Mittwoch, 8. Januar 2014 06:29

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.


    Mittwoch, 8. Januar 2014 14:09
    Moderator

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.


    Mittwoch, 8. Januar 2014 14:09
    Moderator
  • Vielen Dank, das hat mir schon sehr weitergeholfen
    Montag, 13. Januar 2014 06:48