Hi Abt,
besten Dank.
Das funktioniert wie gewünscht.
CU
Oberons
Hallo,
ok. Das erklärt es dann wohl. Ich hatte gedacht, dass "Auto" die Größe automatisch so klein wie nötig macht. Halt so wie in der Vorschau.
Aber dann mach ich es halt fix.
Besten Dank für die Antworten.
CU
Oberons
Hallo Zusammen,
bei mir wird zur Laufzeit das Fenster viel größer angezeigt, als es in der Vorschau im VisualStudio 2022 angezeigt wird.
Ich habe in dem Fenster nur zwei Label, eine ComboBox und eine Textbox. Window Width und Height stehen auf "Auto".
In der Vorschau wird das Fenster auch schön klein und kompakt angezeigt, zur Laufzeit ist nimmt es fast 2/3 des Bildschirmes ein.
In der App.xaml wird keine Windowgröße bestimmt.
Gibt es noch irgendwo eine andere Möglichkeit die Fenstergröße zu beeinflussen?
Besten Dank im Voraus!
CU
Oberons
Hallo Th69,
besten Dank für Deine Hilfe. Du hast wieder den richtigen Anstoß gegeben.
Nach dem Einblenden des Windows kommt jetzt ein:
this.Focus();
Und das behebt das Problem.
CU
Oberons
Mit den TAB-Tasten komme ich in das Menue.
Wenn ich einmal TAB drücke ist die erste Menue-Spalte aktiv aber nicht aufgeklappt.
Dann funktioniert der Short-Cut auch wieder.
Der ShortCut funktioniert auch nicht, wenn ich den Menuepunkt vorher per Mausklick ausgelöst habe.
Hallo Zusammen,
da ich hier vorgestern den passenden Hinweis bekommen habe, versuche ich es gleich nochmal beim nächsten Problem.
Ich habe bei einem WPF-MenuItem einen Shortcut angefügt, bei dessen Aufruf das MainWindow ausgeblendet wird, ein neues Fenster wird dann per ShowDialog geöffnet und wenn das geschlossen wird, dann wird das MainWindow wieder eingeblendet.
Wenn ich dann versuche den Menüpunkt per ShortCut auszulösen bekomme ich einen kurzen Ton der anzeigt, dass etwas nicht funktioniert. Das Ereignis wird nicht ausgelöst.
Wenn ich dann kurz auf "Alt" klicke und anschließend wieder den ShortCut benutze, funktioniert es wieder wie gewollt.
Also direkt nach dem Start geht es beim Beenden der durch den ShortCut ausgelösten Methode nur mit dem Umweg über die Alt-Taste.
Hat jemand einen Verdacht, was dazu führt, dass der ShortCut erst wieder funktioniert, wenn ich vorher die ALT-Taste drücke? Per Maus läßt sich der Menüpunkt immer verlässlich auswählen.
Besten Dank im Voraus!
CU
Oberons
Hi,
besten Dank für die Hilfe.
Der Hinweis mit dem Konstruktor war letzten Endes entscheidend.
Ich habe eine Methode erstellt, die nichts anderes macht als this.Show() und die im Konstuktor aufgerufen wird.
Damit klappt es jetzt wie gewollt, egal ob visible oder nicht. Da macht es auch keinen Unterschied ob ich Show oder ShowDialog verwende.
CU
Oberons
Hi,
schonmal besten Dank für die Hilfe bis hierhin. Ich habe mir jetzt erstmal so beholfen:
public void UserLogOut(object sender, RoutedEventArgs e)
{
this.Opacity = 0.0;
User_Change(this, null);
this.Opacity = 1.0;
}
Sieht nicht schön aus, aber das MainWindow ist nicht mehr bedienbar und es geht anschließend dort weiter.
Wenn es noch eine Lösung gäbe, bei der das Fenster ausgeblendet ist, wäre ich dafür sehr dankbar.
CU
Oberons
Ich habe da einen Verdacht - wie rufst du dort das
MainWindow
wieder auf?
Eigentlich gar nicht. Das Window mit der LogIn-Form wird auch mit this.Close beendet. Und es soll im MainWIndow weitergehen. Was es ja auch tut, wenn das MainWindow sichtbar ist.
Wenn ich this.ShowDialog() durch this.Show() ersetze bekomme ich das Window nicht zu sehen. Es flackert kurz etwas auf was wie ein Fenster aussieht, aber nicht erkennbar ist, und danach wird das Programm beendet.
CU
Oberons
Hi Palladin007,
das hörte sich wie eine mögliche Lösung leider. Leider ist das Verhalten bei "OnLastWindowClose" das gleiche wie beim Default-Wert.
Bei "OnExplicitShutdown" wird das Programm zwar nicht beendet, das MainWindow wird aber auch nicht wieder eingeblendet.
@Th69
So sieht die LogOut_methode aus:
public void UserLogOut(object sender, RoutedEventArgs e)
{
this.Visibility = Visibility.Hidden;
User_Change(this, null);
this.Visibility = Visibility.Visible;
}
In der Methode User_Change wird dann das Window mit der Login-Form wieder aufgerufen.
Btw: Gibt es eine bessere Möglichkeit die Parameteranforderung: "(object sender, RoutedEventArgs e)" zu erfüllen?
Und so startet das MainWindow:
InitializeComponent();
Window window = new Window1();
window.ShowDialog();
if (Window1.Active_User != "")
{
this.ShowDialog();
Es wird erst die Login-Form aufgerufen und wenn das erfolgreich war, wird mit "this.ShowDialog()" das MainWindow gestartet.
Genau in der Zeile landet das Programm auch wieder, wenn die Methode UserLogOut beendet wird.
Ist das MainWindow sichtbar wird es ganz normal eingeblendet und ist benutzbar. Wenn das MainWindow unsichtbar ist, geht er im nächsten Step weiter, verläßt die if-Verzweigung und landet dann außerhalb bei this.close und das Programm wird beendet. Active_User ist einfach eine Variabel, die den Wert des angemeldeten Benutzers bekommt.
Wäre schön, wenn es dafür eine Lösung gäbe.
CU
Oberons