当我尝试使用以下代码打印乘法表时,
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
它给了我一个我想要的对齐良好的表格,如下图所示
如果我更改第 5 行中的 Label1.Text &= Space(8 * (i - 1) + i)
进入 Label1.Text &= Space(8 * (i - 1) )
,表格结果如下:
我想我的问题是:为什么我必须添加更多“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))。而非定宽字体,每个字符都有不同的宽度。例如:字母W比i宽。并且空格也会有不同的宽度。
例如:
固定宽度字体:
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/