如何增加.Net WinForm中複選框的大小。我試過高度和寬度,但它不會增加箱子的大小。如何增加WinForms中複選框的大小?
回答
複選框大小是在Windows窗體內硬編碼的,您不能混淆它。一種可能的解決方法是在現有的頂部繪製複選框。這不是一個很好的解決方案,因爲自動調整大小不能再按原樣工作,並且文本對齊方式混亂,但它是可用的。
向您的項目中添加一個新類並粘貼下面顯示的代碼。編譯。將新控件從工具箱的頂部拖放到表單上。調整控件的大小,以便獲得所需的框尺寸並確保其寬度足以適合文本。
using System;
using System.Drawing;
using System.Windows.Forms;
class MyCheckBox : CheckBox {
public MyCheckBox() {
this.TextAlign = ContentAlignment.MiddleRight;
}
public override bool AutoSize {
get { return base.AutoSize; }
set { base.AutoSize = false; }
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
int h = this.ClientSize.Height - 2;
Rectangle rc = new Rectangle(new Point(0, 1), new Size(h, h));
ControlPaint.DrawCheckBox(e.Graphics, rc,
this.Checked ? ButtonState.Checked : ButtonState.Normal);
}
}
爲了能夠調整複選框,您必須將resize屬性設置爲false。我曾嘗試:
Public Sub New()
Me.Text = "Approved"
Me.TextAlign = ContentAlignment.MiddleLeft
Me.FlatStyle = Windows.Forms.FlatStyle.Flat
End Sub
和:
Me.Height = 24
Me.Width = 200
Dim squareSide As Integer = 20
Dim rect As New Rectangle(New Point(0, 1), New Size(squareSide, squareSide))
ControlPaint.DrawCheckBox(
e.Graphics, rect, If(Me.Checked, ButtonState.Checked, ButtonState.Normal))
Me.FlatStyle = FlatStyle.Flat
End Sub
沒有奏效,
還我試圖覆蓋平板方式,但它不是重寫,能...任何想法?
CheckBox Windows窗體控件中沒有「調整大小」屬性。 – AnAurelian 2012-10-22 12:23:37
如果有人需要VB.NET代碼,我將這個代碼改編成它。我沒有在課堂上使用AutoSize
。一旦項目建立,應該將控件添加到工具箱中。您可以將AutoSize
設置爲False
,就像您使用其他控件一樣。
如果它很重要,我只是把我用它在形式的End Class
下面的類代碼。
要澄清一下AutoSize
呢,這個新的控制的優點是「框」部分複選框可以做得更大。在正常複選框中,您不能更改方框部分。
我看到的這個新控件的唯一缺點是,當您調整它的大小時,如果左對齊,則該部分會超出文本;使用TextAlign
屬性修復此問題。
Public Class NewCheckBox
Inherits CheckBox
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
'Make the box you check 3/4 the height
Dim boxsize As Integer = Me.Height * 0.75
Dim rect As New Rectangle(
New Point(0, Me.Height/2 - boxsize/2),
New Size(boxsize, boxsize)
)
ControlPaint.DrawCheckBox(e.Graphics, rect, If(Me.Checked, ButtonState.Checked, ButtonState.Normal))
End Sub
End Class
C#版本,從a forum.codecall.net topic:
class BigCheckBox : CheckBox
{
public BigCheckBox()
{
this.Text = "Approved";
this.TextAlign = ContentAlignment.MiddleRight;
}
public override bool AutoSize
{
set { base.AutoSize = false; }
get { return base.AutoSize; }
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
this.Height = 100;
this.Width = 200;
int squareSide = 80;
Rectangle rect = new Rectangle(new Point(0, 1), new Size(squareSide, squareSide));
ControlPaint.DrawCheckBox(e.Graphics, rect, this.Checked ? ButtonState.Checked : ButtonState.Normal);
}
}
我有這個工作,但有沒有辦法設置平面樣式? – Ross 2017-10-01 09:42:27
使用不同的控制(例如,標籤或按鈕),只是編程onclick事件改變其外觀以可接受的方式。
- 1. 複選框大小增加
- 2. 增加複選框的大小
- 3. 增加複選框大小 - Phonegap Android
- 4. 如何在Android中自定義(增加大小)複選框
- 5. 如何增加表格內複選框的大小?
- 6. 在C#中的#DataGridView中增加複選框的大小
- 7. 增加複選框中的支票大小
- 8. 增加複選框大小而不是QT中的文本?
- 9. 如何增加在Google Chrome中工作的CSS的複選框大小?
- 10. 如何增加幫助框大小?
- 11. 如何增加一個javascript選框到網站的大小?
- 12. 如何增加複選框平均高度和寬度的大小?
- 13. HTML/CSS:如何在放大時使複選框增長,縮小時如何縮小複選框?
- 14. 複合框與WinForms中的複選框
- 15. 增加交換大小如何增加堆大小?
- 16. 如何增加IsolatedStorage大小?
- 17. 如何增加iPad中popOverView的大小?
- 18. 如何增加oracle中表的大小?
- 19. 如何增加iphone中UITabBarItem的大小?
- 20. 如何增加lex中的yytext大小
- 21. 增加Django管理站點中多選框的大小
- 22. 如何在Dynamic FilteredSelectMultiple中增加文本大小的框寬度
- 23. 如何增加濾鏡菜單中文本框的大小
- 24. 複選框調整大小
- 25. Laravel複選框大小
- 26. 製作複選框大小
- 27. 複選框,輸入大小
- 28. 更改Flex中複選框的大小
- 29. 複雜的Windows桌面大小增加
- 30. 如何增加TabLayout中的選項卡文字大小?
唯一的問題是,在Windows 7中,複選框的樣式與系統默認的 – 2013-01-14 15:55:16
不匹配,系統調用'base.OnPaint(e);'也會在屏幕上留下一些像素,我寧願調用'e.Graphics .Clear(this.BackColor);' – 2013-01-14 16:00:24
非常好的解決方案,例如當我在每個2個字體點放大字體時,複選框的右側重疊一點點右側的文本。 – Samuel 2015-03-12 00:48:05