none
wpf RichTextBox控件如何排布算术题目 RRS feed

  • 问题

  • 我是想编写一个自出题软件,现在想将题目排布在richtextbox里,一次出题,题目会是指定范围内,而且运算数也相同,只不过有一位数有两位数,这样导致每道题目的长度并不完全相同,当然可以获知一个最大长度范围,根据这个数值,决定一行可以排布多少题目。可就因为每道题目的长短略有差别,导致版面非常难看。现在想问一下,如何能实现漂亮的对齐呢,比如每列的等号对齐。谢谢了!

    陈锦巍

    2016年6月14日 8:43

答案

  • 您好 陈锦巍,

    >>"后来查找资料,原来还要选择字体为等宽字体才能解决。"

    是的,只有等宽字体的每个字符长度才相同。

    >>"另外就是,插入几个空格不知还有什么好方法,目前我是以字符差为循环条件逐个循环插入的,要是有诸如"Space(3)"之类的方法代码更简洁。"

    我们可以使用String的PadLeft方法。比如我们期望"(99-8)-7"这个字符串需要占据12个字符空间,不够的补充空格,则可以使用如下方法。

    string text = "(99-8)-7".PadLeft(12);

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 陈锦巍 2016年6月19日 1:07
    2016年6月17日 6:52

全部回复

  • 您好 陈锦巍,

    >>"只不过有一位数有两位数,这样导致每道题目的长度并不完全相同"

    第一种方法是在生成题目的时候把所有的一位数变成两位数,比如 7 变成 07, 9变成09.

    string num = 7.ToString("D2");

    第二种方法是在生成题目的时候让一位数占两位数的位置。也就是在数字前面加空格。

    string num = string.Format(" {0}", 7);
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年6月15日 7:57
  • 谢谢您的回答,关于位数倒不是问题,因为,每次出题时,我会先计算好本次题目的最大长度,然后根据每道题的实际长度,在其前面以空格补充长度差。这样每道题目的字符数(包含前导空格)就一样长了。实际发现,这样做也没法等号对齐。

    后来查找资料,原来还要选择字体为等宽字体才能解决。因为,非等宽字符1跟2的占位不一样长,再就是小括号也跟其他数字占位不一样。所以,选择了等宽字符就解决了。

    另外就是,插入几个空格不知还有什么好方法,目前我是以字符差为循环条件逐个循环插入的,要是有诸如"Space(3)"之类的方法代码更简洁。


    陈锦巍


    2016年6月17日 0:25
  • 您好 陈锦巍,

    >>"后来查找资料,原来还要选择字体为等宽字体才能解决。"

    是的,只有等宽字体的每个字符长度才相同。

    >>"另外就是,插入几个空格不知还有什么好方法,目前我是以字符差为循环条件逐个循环插入的,要是有诸如"Space(3)"之类的方法代码更简洁。"

    我们可以使用String的PadLeft方法。比如我们期望"(99-8)-7"这个字符串需要占据12个字符空间,不够的补充空格,则可以使用如下方法。

    string text = "(99-8)-7".PadLeft(12);

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 陈锦巍 2016年6月19日 1:07
    2016年6月17日 6:52
  • 嗯String的PadLeft方法确实完美解决了我的问题,原来字符串还可以有前导空格的。谢谢您了!

    陈锦巍

    2016年6月19日 1:02