Pencere tanıtıcısı oluşturulduktan sonra Load
olayının tetiklendiğini, ancak penceresinden pencerenin gerçekten görünür hale geldiğini okudum. Çoğunlukla, bu doğru gibi görünüyor. Ancak, WindowState
özelliği FormWindowState.Maximized
olarak ayarlanmış bir form oluşturduğumda (VS tasarımcısı aracılığıyla veya yapıcıda programlı olarak), pencerenin Load
olay ateşlemesinden önce görünür hale geldiğini buldum. Örneğin: sırayla WindowState öğesinin Maksimize edilen nedenlere göre ayarlanması pencerenin çok erken görünmesi
using System; using System.Windows.Forms; namespace MyApplication { public partial class MyForm : Form { public MyForm() { InitializeComponent(); WindowState = FormWindowState.Maximized; } protected override void OnLoad(EventArgs e) { MessageBox.Show("OnLoad - notice that the window is already visible"); base.OnLoad(e); } } }
Bu
pencere görünür iken (Form.Load
olay sırasında yerleştirilir) denetimlerinin yeniden boyutlandırılır ederken çok titreşmeye görüntülenen formu neden olur. Eğer durumu maksimize edilecek şekilde ayarlamadıysam, tüm yeniden boyutlandırma pencerenin gösterilmesinden önce yapılır (beklediğim şey budur). Load
olayının sonuna kadar WindowState
ayarını yapmaya devam edebilirim, ancak bu, pencerenin görünür hale gelmesi ve tüm denetimlerin yeniden boyutlandırılması nedeniyle çok fazla titremeye neden olabilir.
Herhangi bir düşünce?
'Bu. – LarsTech
'Load' olayındaki denetimleri yeniden boyutlandırmak biraz şüpheli. Neden "Dock" veya "Anchor" özellikleri veya "TableLayoutPanel" gibi kontroller için yerleşik yeniden boyutlandırma mekanizmalarına güvenmiyorsunuz? Pencereyi daha sonra manuel olarak yeniden boyutlandırdığımda denetimleri de el ile yeniden boyutlandırır mısınız? –
Bunu da alıyorum. Kullanıcı oturumları arasında WindowState'i kaydediyorum, böylece kullanıcı daha önce neye sahip olduğu ve WindowState'i Maksimize olarak ayarladığım zaman yeniden boyutlandırılabilsin, vb. Çok fazla titreklik alıyorum. Bunu düzeltmek için bir çözüm var mı? –