2016-04-04 13 views
0

Çalışma zamanında FormBorderStyle == FixedSingle ile pencere form boyutunu nasıl değiştirebilirim? mülkiyet FormBorderStyle ile bu koduForm Büyüklüğünü Değiştir - FormBorderStyle

private void Form1_Deactivate(object sender, EventArgs e) 
{ 
    this.Size = new Size(this.Width, 0); 
} 

kullanma

== oldukça büyük bir, everysing Tamam ve form bu enter image description here

gibi Ama eğer görünüyor özelliği FixedSingle ayarlı veya formun bir kısmı FixedToolWindow gösterdi . enter image description here

Formun bu kısmı nasıl kaldırılır?

+2

Bekleyin, biraz geri adım atın. Bu formu nasıl yeniden boyutlandırmaya çalışıyorsunuz? Hide() 'in nesi var? Ne yapmaya çalışıyorsun? – Luaan

+0

Hide() yöntemi zaten gerçekleştirildi. İkinci yöntem, formu başlıkta toplar. – Cl3r1k

+0

Ne söylemeye çalıştığın hakkında hiçbir fikrim yok. Formu devre dışı bırakıldığında yalnızca başlığa mı taşımak istiyorsunuz? – Luaan

cevap

0

Kolayca düzeltilen bir şey gibi görünmüyor - form FormBorderStyle.FixedSingle (ve arkadaşlar) ile ilişkili pencere stilini alır almaz, istemci alanı genişler. İstemciyi değiştirmeyi denedim hesaplamalar (WM_NCCALCSIZE ve arkadaşlar), ancak daha küçük yapabileceğim tek yol, istemci olmayan alanı da yeniden boyamaktı. Tam davanıza bağlı olarak, bu geçerli bir seçenek olabilir veya olmayabilir. . Ancak, MaxSize ve MinSize ayarlarını uygun şekilde ayarlarken kenarlık stilini büyükçe değiştirilebilir, bu da formun istemci alanını "görünmez" tutarken yeniden boyutlandırmayı engeller. Bonus puanları için, fare yeniden boyutlandırmayı tamamen önlemek için WM_NCHITTEST'u kullanabilirsiniz (yalnızca yeniden boyutlandırma tutamaçlarının aslında başlık/istemci alanı olduğunu varsayın). Formu tekrar etkinleştirdiğinizde, eski stilleri ve ayarları geri yükleyin.

İlgili konular