如何自动在多行显示复选框的文本?

时间:2016-05-02 06:38:46

标签: c# winforms checkbox richtextbox

我做了一个测验,将问题存储在SQL database中,并在Rich Text Box中显示问题,在Check Boxes中显示答案。

但有时答案太长,我需要更多空间来展示。我认为multiline可以帮助我,但我无法找到办法。

谢谢!

2 个答案:

答案 0 :(得分:1)

Winforms复选框的AutoSize属性默认设置为true。*
如果您将其设置为false,则可以更改复选框的高度,并且文本会自动换行。
但是,如果AutoSize属性设置为false,则必须自己设置复选框的宽度和高度。

*正如TaW在其评论中提到的,AutoSize属性的默认值仅为true在设计器中添加复选框时。对于动态创建的复选框,默认值为false

答案 1 :(得分:0)

如果设置复选框的宽度,您将自动获得多行。 我做了一个简单的例子,说明如何设置控件的宽度(如果你想要宽度设置为硬),然后只调整高度。 最好设置高度正确或文本可能被剪裁。

试试这个:

    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);
        }
    }