Aracılığıyla paylaş


Denetimlerin konumu ve düzeni

Windows Forms'da denetim yerleşimi yalnızca denetim tarafından değil, denetimin üst öğesi tarafından da belirlenir. Bu makalede, denetimler tarafından sağlanan farklı ayarlar ve düzeni etkileyen farklı üst kapsayıcı türleri açıklanmaktadır.

Sabit konum ve boyut

Denetimin ana öğede göründüğü konum, üst yüzeyin sol üst köşesine göre Location özelliğinin değerine dayanarak belirlenir. Bir üst öğedeki kontrolün sol üst konum koordinatı (x0,y0)'dir. Denetimin boyutu Size özelliği tarafından belirlenir ve denetimin genişliğini ve yüksekliğini temsil eder.

Kapsayıcıya göre bir denetimin konumu

Otomatik yerleştirmeyi zorlayan bir üst öğeye denetim eklendiğinde, denetimin konumu ve boyutu değiştirilir. Bu durumda, denetimin konumu ve boyutu üst öğe türüne bağlı olarak el ile ayarlanamayabilir.

MaximumSize ve MinimumSize özellikleri, bir denetimin kullanabileceği en düşük ve en yüksek alanı ayarlamaya yardımcı olur.

Kenar Boşluğu ve Dolgu

Denetimlerin tam olarak yerleştirilmesine yardımcı olan iki denetim özelliği vardır: Margin ve Padding.

Margin özelliği, diğer denetimlerin denetimin kenarlıklarından belirli bir mesafede kalmasını sağlayan kontrol etrafındaki boşluğu tanımlar.

Padding özelliği, denetimin içeriğini (örneğin, Text özelliğinin değeri) denetimin kenarlıklarından belirli bir uzaklığı tutan bir denetimin içindeki alanı tanımlar.

Aşağıdaki şekilde bir kontrol üzerindeki Margin ve Padding özellikleri gösterilmektedir.

Windows Forms Denetimleri için Kenar Boşluğu ve Doldurma özellikleri

Denetimleri konumlandırırken ve yeniden boyutlandırırken Visual Studio Tasarımcısı bu özelliklere dikkat eder. Snaplines, bir denetimin belirlenen kenar boşluğunun dışında kalmanıza yardımcı olan kılavuzlar olarak görünür. Örneğin, Visual Studio'da bir denetimi başka bir denetimin yanına sürüklediğinizde yapışma çizgisi görüntülenir.

Visual Studio'da Windows Forms .NET için kenar boşluğu özelliklerine sahip ek çizgileri gösteren animasyonlu görüntü

Otomatik yerleştirme ve boyut

Denetimler otomatik olarak ebeveyn içine yerleştirilebilir. Bazı üst kapsayıcılar yerleştirmeyi zorlarken, bazıları yerleştirme için yol gösteren kontrol ayarlarına saygı gösterir. Denetimde üst öğe içinde otomatik yerleştirmeye ve boyutlandırmaya yardımcı olan iki özellik vardır: Dock ve Anchor.

Çizim sırası otomatik yerleştirmeyi etkileyebilir. Bir denetimin çizilme sırası, üst öğesinin Controls koleksiyonundaki denetim dizininden belirlenir. Bu dizin Z-orderolarak bilinir. Denetimlerin her biri, koleksiyonda göründükleri sıranın tersinde çizilir. Yani koleksiyon, son giren ilk çıkar ve ilk giren son çıkar yöntemine dayanan bir koleksiyondur.

MinimumSize ve MaximumSize özellikleri, bir denetimin kullanabileceği en düşük ve en yüksek alanı ayarlamaya yardımcı olur.

İskele

Dock özelliği, denetimin hangi kenarının üst öğeye karşılık gelen tarafa hizalı olduğunu ve denetimin üst öğe içinde nasıl yeniden boyutlandırıldığını ayarlar.

"Çapalama ayarlarına sahip düğmelerle Windows formu ."

Bir denetim yerleştirildiğinde kapsayıcı, kaplaması gereken alanı belirler ve denetimi yeniden boyutlandırır ve konumlandırır. Denetimin genişliği ve yüksekliği, yerleştirme stiline göre yine de dikkate alınmaktadır. Örneğin, denetim en üste sabitlenmişse, denetimin Height değeri korunur ancak Width değeri otomatik olarak ayarlanır. Bir denetim sola kenetlenmişse, denetimin Width değeri korunur, ancak Height otomatik olarak ayarlanır.

Denetim bağlanırken konum otomatik olarak ayarlandığı için denetimin konumu el ile ayarlanamaz.

Denetimin Z-order'ı yerleştirme üzerinde etkili olabilir. Yerleşik denetimler yerleştirildiğinde, kendilerine sağlanan alanı kullanırlar. Örneğin, bir denetim ilk olarak çizilirse ve üste sabitlenirse, kapsayıcının tüm genişliğini kaplar. Eğer bir sonraki denetim sola kenetlenmişse, kullanabileceği daha az dikey alan vardır.

Sol ve üst kısma yerleştirilmiş, üst kısmı daha büyük olan düğmelere sahip Windows formu.

Denetimin Z-order ters döndürülmüşse, sola sabitlenen denetim artık daha fazla başlangıç alanına sahiptir. Denetim, kapsayıcının tüm yüksekliğini kullanır. Üste yerleştirilen kontrolün kullanılabilir yatay alanı daha azdır.

Windows formu, sola ve üste kenetlenmiş düğmelerle, sol taraftaki daha büyük olacak şekilde.

Kapsayıcı büyüdükçe ve küçüldükçe, kapsayıcıya yerleştirilmiş denetimler geçerli konumlarını ve boyutlarını korumak için yeniden konumlandırılır ve yeniden boyutlandırılır.

Tüm konumlara yerleştirilmiş düğmeleri olan bir Windows Formunun nasıl yeniden boyutlandırıldığını gösteren animasyon.

Kapsayıcının aynı tarafına birden çok kontrol yerleştirilmişse, Z-ordergöre yığılırlar.

Sola yerleştirilmiş iki düğmeyle Windows formu.

Bağlayıcı

Denetimi sabitlemek, denetimi üst kapsayıcının bir veya daha fazla tarafına bağlamanızı sağlar. Kapsayıcının boyutu değiştikçe, bağlı alt kontroller bağlı oldukları tarafa olan uzaklığını korur.

Denetim, kısıtlama olmadan bir veya daha fazla tarafa sabitlenebilir. Tutturucu, Anchor özelliğiyle ayarlanır.

Tüm konumlara sabitlenmiş düğmelere sahip bir Windows Formunun nasıl yeniden boyutlandırıldığını gösteren animasyon.

Otomatik boyutlandırma

AutoSize özelliği, bir denetimin gerekirse boyutunu PreferredSize özelliği tarafından belirtilen boyuta uyacak şekilde değiştirmesine olanak tanır. AutoSizeMode özelliğini ayarlayarak belirli denetimler için boyutlandırma davranışını ayarlarsınız.

yalnızca bazı denetimler AutoSize özelliğini destekler. Ayrıca, AutoSize özelliğini destekleyen bazı denetimler de AutoSizeMode özelliğini destekler.

Her zaman doğru davranış Açıklama
Otomatik boyutlandırma bir çalışma zamanı özelliğidir. Bu, hiçbir zaman bir denetimi büyütmediği veya küçültmediği ve bundan sonra başka etkisi olmadığı anlamına gelir.
Denetimin boyutu değişirse, Location özelliğinin değeri her zaman sabit kalır. Bir kontrolün içeriği büyüdüğünde, kontrol sağa ve aşağı doğru genişler. Kontroller sola doğru büyümez.
Dock ve Anchor özellikleri, AutoSizetrueolduğunda dikkate alınır. Denetimin Location özelliğinin değeri doğru değere ayarlanır.

Label denetimi bu kuralın özel durumudur. Yerleşik Label kontrolünün AutoSize özelliğinin değerini true olarak ayarladığınızda, Label kontrolü esnemeyecek.
Bir denetimin MaximumSize ve MinimumSize özellikleri, AutoSize özelliğinin değerinden bağımsız olarak her zaman kabul edilir. MaximumSize ve MinimumSize özellikleri, AutoSize özelliğinden etkilenmez.
Varsayılan olarak ayarlanmış minimum boyut yoktur. Bu, denetimin AutoSize altında küçültülecek şekilde ayarlandığı ve içeriği yoksa, Size özelliğinin değerinin (0x,0y)olduğu anlamına gelir. Bu durumda, denetiminiz bir noktaya küçülür ve kolayca görünmez.
Bir denetim GetPreferredSize yöntemini uygulamazsa, GetPreferredSize yöntemi Size özelliğine atanan son değeri döndürür. Bu, ayarının AutoSizetrue olarak ayarlanmasının hiçbir etkisi olmadığı anlamına gelir.
TableLayoutPanel hücresindeki kontrol, MinimumSize'e ulaşılana kadar her zaman hücreye sığacak şekilde küçülür. Bu boyut, maksimum boyut olarak uygulanır. Hücre bir AutoSize satır veya sütunun parçası olduğunda bu durum geçerli değildir.

AutoSizeMode özelliği

AutoSizeMode özelliği, varsayılan AutoSize davranışı üzerinde daha ayrıntılı denetim sağlar. AutoSizeMode özelliği, bir denetimin içeriğine göre kendini nasıl boyutlandıracağını belirtir. Örneğin, içerik bir Button denetiminin metni veya bir kapsayıcının alt denetimleri olabilir.

Aşağıdaki listede AutoSizeMode değerleri ve davranışı gösterilmektedir.

  • AutoSizeMode.GrowAndShrink

    Kontrol, içeriğini kapsayacak şekilde büyür veya küçülür.

    MinimumSize ve MaximumSize değerleri korunur, ancak Size özelliğinin mevcut değeri dikkate alınmaz.

    Bu, AutoSize özelliğine sahip denetimlerle aynı davranıştır ve AutoSizeMode özelliği yoktur.

  • AutoSizeMode.GrowOnly

    Denetim, içeriğini kapsayacak kadar büyür, ancak Size özelliği tarafından belirtilen değerin altına inmez.

    Bu, AutoSizeModeiçin varsayılan değerdir.

AutoSize özelliğini destekleyen denetimler

Aşağıdaki tabloda denetime göre otomatik boyutlandırma desteği düzeyi açıklanmaktadır:

Yönetim AutoSize destekleniyor AutoSizeMode destekleniyor
Button ✔️ ✔️
CheckedListBox ✔️ ✔️
FlowLayoutPanel ✔️ ✔️
Form ✔️ ✔️
GroupBox ✔️ ✔️
Panel ✔️ ✔️
TableLayoutPanel ✔️ ✔️
CheckBox ✔️
DomainUpDown ✔️
Label ✔️
LinkLabel ✔️
MaskedTextBox ✔️
NumericUpDown ✔️
RadioButton ✔️
TextBox ✔️
TrackBar ✔️
CheckedListBox
ComboBox
DataGridView
DateTimePicker
ListBox
ListView
MaskedTextBox
MonthCalendar
ProgressBar
PropertyGrid
RichTextBox
SplitContainer
TabControl
TabPage
TreeView
WebBrowser
ScrollBar

Tasarım ortamında Otomatik Boyutlandırma

Aşağıdaki tabloda, denetimin AutoSize ve AutoSizeMode özelliklerine göre tasarım zamanındaki boyutlandırma davranışı açıklanmaktadır.

Belirli bir denetimin kullanıcı tarafından yeniden boyutlandırılabilir durumda olup olmadığını belirlemek için SelectionRules özelliğini geçersiz kılın. Aşağıdaki tabloda "yeniden boyutlandırılamıyor", yalnızca Moveable, "yeniden boyutlandırabilir" ifadesi AllSizeable ve Moveableanlamına gelir.

AutoSize ayar AutoSizeMode ayar Davranış
true Mülk kullanılamıyor. Kullanıcı, aşağıdaki denetimler dışında denetimi tasarım zamanında yeniden boyutlandıramaz:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
true GrowAndShrink Kullanıcı tasarım zamanında denetimi yeniden boyutlandıramaz.
true GrowOnly Kullanıcı tasarım zamanında denetimi yeniden boyutlandırabilir. Size özelliği ayarlandığında, kullanıcı yalnızca denetimin boyutunu artırabilir.
false veya AutoSize gizlenir Uygulanamaz. Kullanıcı, denetimi tasarım zamanında yeniden boyutlandırabilir.

Uyarı

Üretkenliği en üst düzeye çıkarmak için Visual Studio'daki Windows Forms Tasarımcısı, AutoSize sınıfının Form özelliğini gölgeler. Tasarım zamanında form, gerçek ayarından bağımsız olarak AutoSize özelliği falseolarak ayarlanmış gibi davranır. Çalışma zamanında özel bir düzenleme yapılmaz ve AutoSize özelliği, özellik ayarında belirtildiği şekilde uygulanır.

Kapsayıcı: Form

Form, Windows Forms'un ana nesnesidir. Windows Forms uygulamasında genellikle her zaman bir form görüntülenir. Formlar denetimler içerir ve el ile yerleştirme için denetimin Location ve Size özelliklerine saygı gösterir. Formlar otomatik yerleştirme için Dock özelliğine de yanıt verir.

Çoğu zaman formun kenarlarında, kullanıcının formu yeniden boyutlandırmasına olanak sağlayan kavramaları vardır. Denetimin Anchor özelliği, form yeniden boyutlandırılırken denetimin büyümesine ve küçülmesini sağlar.

Kapsayıcı: Panel

Panel denetimi, yalnızca denetimleri birlikte gruplandıran bir forma benzer. Bir form ile aynı manuel ve otomatik yerleştirme stillerini destekler. Daha fazla bilgi için Kapsayıcısı: Form bölümüne bakın.

Panel, ana öğeyle sorunsuz bir şekilde kaynaşır ve panelin sınırları dışına çıkan bir denetim alanını keser. Denetim panelin sınırlarının dışında kalırsa ve AutoScrolltrueolarak ayarlanırsa kaydırma çubukları görüntülenir ve kullanıcı paneli kaydırabilir.

grup kutusu denetiminin aksine, bir panelde resim yazısı ve kenarlık yoktur.

Panel ve grup kutusu içeren bir Windows Formu .

Yukarıdaki görüntüde, panelin sınırlarını göstermek için BorderStyle özelliğinin ayarlandığı bir panel bulunur.

Kapsayıcı: Grup kutusu

GroupBox denetimi, diğer denetimler için tanımlanabilir bir gruplandırma sağlar. Genellikle, bir formu işleve göre alt bölümlere ayıracak bir grup kutusu kullanırsınız. Örneğin, kişisel bilgileri temsil eden bir formunuz olabilir ve adresle ilgili alanlar birlikte gruplandırılır. Tasarım aşamasında, grup kutusunu ve içindeki denetimleri birlikte taşımak kolaydır.

Grup kutusu, formun sahip olduğu el ile ve otomatik yerleştirme stillerini destekler. Daha fazla bilgi için Kapsayıcısı: Form bölümüne bakın. Grup kutusu, denetimin panelin sınırları dışında kalan herhangi bir bölümünü de keser.

paneli denetiminden farklı olarak, bir grup kutusunun içeriği kaydırma ve kaydırma çubuklarını görüntüleme özelliği yoktur.

Panel ve grup kutusu içeren bir Windows Formu .

Kapsayıcı: Akış Düzeni

FlowLayoutPanel denetimi, içeriğini yatay veya dikey akış yönünde düzenler. Denetimin içeriğini bir satırdan diğerine veya bir sütundan diğerine kaydırabilirsiniz. Alternatif olarak, içeriği sarmak yerine kırpabilirsiniz.

FlowDirection özelliğinin değerini ayarlayarak akış yönünü belirtebilirsiniz. FlowLayoutPanel denetimi, Sağdan Sola (RTL) düzenlerde akış yönünü doğru ters çevirir. FlowLayoutPanel özelliğinin değerini ayarlayarak, WrapContents denetiminin içeriğinin sarılmış mı yoksa kırpılmış mı olacağını belirleyebilirsiniz.

FlowLayoutPanel özelliğini AutoSizeolarak ayarladığınızda, true denetimi otomatik olarak içeriğinin boyutuna ayarlanır. Ayrıca alt denetimleri için bir FlowBreak özelliği sağlar. FlowBreak özelliğinin değerinin true olarak ayarlanması, FlowLayoutPanel denetiminin denetimleri geçerli akış yönünde yerleştirmeyi durdurmasına ve sonraki satıra veya sütuna kaydırmasına neden olur.

İki akış paneli denetimine sahip bir Windows Formu .

Yukarıdaki görüntüde, denetimin sınırlarını göstermek için FlowLayoutPanel özelliği ayarlanmış iki BorderStyle denetimi vardır.

Kapsayıcı: Tablo düzeni

TableLayoutPanel denetimi, içeriğini bir ızgarada düzenler. Düzen hem tasarım zamanında hem de çalışma zamanında yapıldığından, uygulama ortamı değiştikçe dinamik olarak değişebilir. Bu, paneldeki denetimlere orantılı olarak yeniden boyutlandırma olanağı sağlar, böylece yerelleştirme nedeniyle üst denetimin yeniden boyutlandırılması veya metin uzunluğunun değişmesi gibi değişikliklere yanıt verebilirler.

Herhangi bir Windows Forms denetimi, diğer TableLayoutPanelörnekleri de dahil olmak üzere TableLayoutPanel denetiminin alt öğesi olabilir. Bu, çalışma zamanındaki değişikliklere uyum sağlayan gelişmiş düzenler oluşturmanıza olanak tanır.

TableLayoutPanel denetimi alt denetimlerle dolduktan sonra genişletme yönünü (yatay veya dikey) de kontrol edebilirsiniz. Varsayılan olarak, TableLayoutPanel denetimi satır ekleyerek aşağı doğru genişler.

RowStyles ve ColumnStyles özelliklerini kullanarak satır ve sütunların boyutunu ve stilini denetleyebilirsiniz. Satırların veya sütunların özelliklerini ayrı ayrı ayarlayabilirsiniz.

TableLayoutPanel denetimi alt denetimlerine şu özellikleri ekler: Cell, Column, Row, ColumnSpanve RowSpan.

Tablo düzeni denetimine sahip bir Windows Formu .

Yukarıdaki görüntüde, her hücrenin sınırlarını göstermek için CellBorderStyle özelliği ayarlanmış bir tablo vardır.

Kapsayıcı: Bölünmüş kapsayıcı

Windows Forms SplitContainer denetimi bileşik denetim olarak düşünülebilir; hareketli bir çubukla ayrılmış iki paneldir. Fare işaretçisi çubuğun üzerindeyken, işaretçi çubuğun taşınabilir olduğunu göstermek için şekli değiştirir.

SplitContainer denetimiyle karmaşık kullanıcı arabirimleri oluşturabilirsiniz; genellikle, bir paneldeki seçim diğer panelde hangi nesnelerin gösterileceğini belirler. Bu düzenleme, bilgileri görüntülemek ve göz atmak için etkilidir. İki panele sahip olmak, alanlardaki bilgileri toplamanıza olanak tanır ve çubuk veya "bölücü", kullanıcıların panelleri yeniden boyutlandırmasını kolaylaştırır.

İç içe bölmeli kapsayıcıya sahip bir Windows Formu .

Yukarıdaki görüntüde, bir sol ve bir sağ bölme oluşturmak üzere bölünmüş bir kapsayıcı bulunmaktadır. Sağ bölme, OrientationVerticalolarak ayarlanmış ikinci bir bölünmüş kapsayıcı içerir. BorderStyle özelliği, her panelin sınırlarını gösterecek şekilde ayarlanır.

Kapsayıcı: Sekme kontrolü

TabControl, not defterindeki ayırıcılar veya dosya dolabındaki bir klasör kümesindeki etiketler gibi birden çok sekme görüntüler. Sekmelerde resimler ve diğer denetimler bulunabilir. Windows işletim sisteminde Denetim Masası ve Görüntü Özellikleri gibi birçok yerde görünen birden çok sayfalı iletişim kutusu türünü oluşturmak için sekme denetimini kullanın. Ayrıca, TabControl ilgili özellikler grubunu ayarlamak için kullanılan özellik sayfaları oluşturmak için kullanılabilir.

TabControl en önemli özelliği, tek tek sekmeleri içeren TabPagesözelliğidir. Tek tek her sekme bir TabPage nesnesidir.

İki sekme sayfası içeren bir sekme denetimine sahip bir Windows Formu .