vb.net - 使用 VB.Net 打印乘法表

标签 vb.net

当我尝试使用以下代码打印乘法表时,

    Dim se As String
    Label1.Text = Space(35) & "九九乘法表" & vbCrLf
    Label1.Text &= Space(35) & "-----------" & vbCrLf
    For i = 1 To 9
        Label1.Text &= Space(8 * (i - 1) + i)
        For j = i To 9
            se = i & "×" & j & "=" & i * j
            Label1.Text &= se & Space(8 - Len(se))
        Next j
        Label1.Text &= vbCrLf
    Next i

它给了我一个我想要的对齐良好的表格,如下图所示

enter image description here

如果我更改第 5 行中的 Label1.Text &= Space(8 * (i - 1) + i)

进入 Label1.Text &= Space(8 * (i - 1) ) ,表格结果如下:

enter image description here

我想我的问题是:为什么我必须添加更多“i”空格?

感谢埃德珀的回答。

但我只是很困惑为什么需要这样一个额外的增量空间?

假设我使用的是 Label1.Text &= Space(8 * (i - 1) ) ,那么第一个循环中将没有空格,第二个循环中将有 8 个空格,第三个循环中有 16 个空格...,为什么这不能使所有方程对齐?

更具体地说,在等式 1x1=1 之后有 3 个空格,因此在 1x2=2 之前有 8 个字符,那么如果我在第二个循环中有 8 个空格,则 2x2=4 应该与 1x2= 对齐2,但没有。这就是我想知道的。

最佳答案

Label1 控件使用什么字体?从屏幕截图中,我可以看到您没有使用固定宽度的字体。

如果您将字体更改为固定宽度字体系列(例如:Courier New),您将获得一个与代码 Label1.Text &= Space(8 * (i - 1)) 完美对齐的表格。 ,同时使用...) + i)代码将为您提供一个具有未对齐列的表格。

原因是,无论字体大小如何,固定宽度字体对于集合中的每个字符都具有相同的宽度。这也包括空格 (Chr(32))。而非定宽字体,每个字符都有不同的宽度。例如:字母Wi宽。并且空格也会有不同的宽度。

例如:

固定宽度字体:

1x1=1...1x2=2  
........2x2=4

非等宽字体:

1x1=1...1x2=2
........2x2=4

您可以在上面看到,在上面的两个“表格”中,我放置了 7 个点来插入第二行与第一行的第二列对齐。而在使用非等宽字体的表格中,2x2=4出现在它应该在的左侧。

这意味着,由于空间较窄,您需要附加更多空格以使其对齐,如下所示:

1x1=1...1x2=2
......2x2=4

在上面的示例表中,我必须输入 13 个点才能使其看起来对齐(或足够接近)。由于此页面使用其他字体来显示此表格。

就您而言,您很幸运,只需添加 i 即可完美对齐您正在使用的字体。 .

关于vb.net - 使用 VB.Net 打印乘法表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370994/

相关文章:

c# - 如何打开带附件的默认电子邮件客户端

html - 如何修改此代码以使其适用于 IE 11?

vb.net - 检查 Visual Basic 中的列表索引处是否存在对象

vb.net - 在 VB.net 中将 csv 数据转换为 DataTable,从第 0 行捕获列名

c# - FtpWebRequest 移动文件

vb.net - Visual Studio 2015不断关闭VB的代码选项的漂亮列表(重新格式化)

mysql - MySql 查询的 VB.net 动态参数

mysql - 如何限制可以输入到 Visual Basic 文本框的数据类型?

vb.net - Winforms 形式 vb.net 中对象的起始属性

mysql - 查询以提取从不同表插入/更新的所有行