




[ÇÖZÜLDÜ] Gizlediğim Pencereyi Diğer Pencereden Görünür Hale Getirmek (WPF)
-
Bir C# WPF uygulamasında
private void openSplash()
{
Hide();
Splash splash = new Splash();
splash.Show();
}koduyla MainWindow u Hide() metodu ile gizleyip, Splash penceresini açıyorum.
Splash deki kodla zamanı gelince splash penceresini kapatıp, MainWindow u aşağıdaki şekilde açıyorum:
private void closeSplashScreen()
{
this.Close();
MainWindow main = new MainWindow();
main.Show();
}Sorun şu ki, bu şekilde yaptığımda alt tarafta sanki iki tane MainWindow çalışıyor gibi işlem yapıyor. Herşeyi iki kere yapıyor. Örneğin iki tane POST sorgusu gönderiyor vs..
Çözüm için önerisi olan var mı?
Teşekkürler.
ÇÖZÜM:
//pass a parameter to the loginwindow of type MainWindow. //That allows the Login window to have a reference to the MainWindow: this.Hide(); Login li = new Login(this); li.Show(); //And the login window: private MainWindow m_parent; public Login(MainWindow parent):this() { m_parent = parent; } //Login Succesfull function private void Succes(){ m_parent.Show(); }
kaynak: https://stackoverflow.com/questions/6814170/wpf-how-hide-show-main-window-from-another-window
RockZs tarafından 06/Nis/18 04:20 tarihinde düzenlenmiştir -
abi c# bilmiyorumda, hide ile gizlemek yerine close ya da quit gibi bir şeyle çıkman gerekir bence o window dan, yoksa arkada çalışmaya devam etmesi normal.
-
nevorapat bunu yazdı
abi c# bilmiyorumda, hide ile gizlemek yerine close ya da quit gibi bir şeyle çıkman gerekir bence o window dan, yoksa arkada çalışmaya devam etmesi normal.
Öneri için teşekkür ederim fakat "MainWindow" olduğundan Close(); metodunu kullandığımda uygulama kapanıyor.
Yine de App.xaml deki:
StartupUri="MainWindow.xaml"
ShutdownMode="OnExplicitShutdown"özelliklerini kurcalayacağım, belki buralardan ana pencereye önce görünmeyecek (hiç başlamayacak) şekilde başlatıp, sonradan tek seferde temiz bir başlangıç yaptırabilirim.
RockZs tarafından 29/Mar/18 08:47 tarihinde düzenlenmiştir -
Show yaptıktan sonra mainWindow içerisinde onLoad fonksiyonu falan varsa onun içerisindeki kodların 1 defa daha çalışır etti mi sana 2x bir daha çağırırsan o bidaha çalışır eder sana 3x.
Başka aklıma bir şey gelmiyor. onLoad vs tarzında bir şey vardı C# da en son 5 sene önce yazmıştım :D Hatırlamıyorum. Ordaki kodu debug et. 2. show dediğin zaman ordaki fonksiyon calısacaktır.
-
dotnet bilmiyorum ama SetWindowPos apisinin işine yarayacağını düşünüyorum.
https://stackoverflow.com/questions/1190423/using-setwindowpos-in-c-sharp-to-move-windows-around -
hide yerine visible yapsan ??
yada ayarlarından kapatma formunu main form değilde tüm pencereler kapandığında kapanacak şekilde ayarlasan ??