如何自动在多行上显示复选框的文本?
How to display text of Check Box on multiple lines automatically?
我做了一个测验,将问题存储在 SQL database
中,并在 Rich Text Box
中显示问题,在 Check Boxes
中显示答案。
但有时答案太长,我需要更多space才能显示。我以为 multiline
会对我有帮助,但我找不到办法。
谢谢!
Winforms 复选框的 AutoSize
属性 默认设置为 true
。*
如果您将它设置为 false
,您可以更改复选框的高度并且它的文本会自动换行。
但是,如果AutoSize
属性设置为false
,则必须自己设置复选框的宽度和高度。
*正如 TaW 在他的评论中提到的,只有在设计器中添加复选框时,AutoSize
属性 的默认值才为 true
。对于动态创建的复选框,默认值为 false
.
如果您设置复选框的宽度,您将自动获得多行。
我做了一个简单的例子来说明如何设置控件的宽度(如果你想硬设置宽度)然后调整高度。
最好设置正确的高度,否则文字可能会被剪裁。
试试这个:
private void CreateCheckBox(){
CheckBox cb = new CheckBox();
cb.Location = new Point(10, 10);
cb.Width = 150;
Controls.Add(cb);
cb.Text = "This is a long text that needs to be broken down into multiple lines.";
cb.Height = GetHeight(cb);
}
private static int GetHeight(CheckBox cb) {
using (Graphics g = cb.CreateGraphics()) {
var size = g.MeasureString(cb.Text, cb.Font);
int rows = (int)Math.Ceiling(((double) size.Width/cb.Width));
return (int)(rows*size.Height);
}
}
我做了一个测验,将问题存储在 SQL database
中,并在 Rich Text Box
中显示问题,在 Check Boxes
中显示答案。
但有时答案太长,我需要更多space才能显示。我以为 multiline
会对我有帮助,但我找不到办法。
谢谢!
Winforms 复选框的 AutoSize
属性 默认设置为 true
。*
如果您将它设置为 false
,您可以更改复选框的高度并且它的文本会自动换行。
但是,如果AutoSize
属性设置为false
,则必须自己设置复选框的宽度和高度。
*正如 TaW 在他的评论中提到的,只有在设计器中添加复选框时,AutoSize
属性 的默认值才为 true
。对于动态创建的复选框,默认值为 false
.
如果您设置复选框的宽度,您将自动获得多行。 我做了一个简单的例子来说明如何设置控件的宽度(如果你想硬设置宽度)然后调整高度。 最好设置正确的高度,否则文字可能会被剪裁。
试试这个:
private void CreateCheckBox(){
CheckBox cb = new CheckBox();
cb.Location = new Point(10, 10);
cb.Width = 150;
Controls.Add(cb);
cb.Text = "This is a long text that needs to be broken down into multiple lines.";
cb.Height = GetHeight(cb);
}
private static int GetHeight(CheckBox cb) {
using (Graphics g = cb.CreateGraphics()) {
var size = g.MeasureString(cb.Text, cb.Font);
int rows = (int)Math.Ceiling(((double) size.Width/cb.Width));
return (int)(rows*size.Height);
}
}