字符串格式在标签文本中显示不正确
String format not displaying properly in label text
我正在尝试格式化字符串列表,以便将项目显示为两列,每列长度为 40。为此,我正在使用下一个函数:
Private Function GetNamesString(names As List(Of String)) As String
Dim str As String = String.Empty
For i = 0 To names.Count - 2 Step 2
str += $"{names(i),-40}{names(i + 1),-40}"
str += $"{vbCrLf}"
Next
Return str
End Function
我建立消息如下:
Dim message As String = $"Removing master species {gbl.EditSpecies.Name} implies that next {names.Count} species must be also removed:{vbCrLf}{vbCrLf}"
message += GetNamesString(names)
message += $"{vbCrLf}{vbCrLf}Do you want to remove above species besides {gbl.EditSpecies.Name}?"
获取下一个字符串:
Removing master species Fe+3 implies that next 106 species must be also removed:
Beidellite_SBld-1(4.576H2O) Ca2Fe2O5(s)
CaFe2O4(s) C4FH13
C3FH6 Ettringite-Fe
Monosulfate-Fe Smectite_MX80(5.189H2O)
...
最后,我显示消息形式:
frmShowMessage.Show(message, "Remove species", enumMessageIcon.Warning, enumMessageButton.YesNo)
直接在标签文字中显示message
:lblMessageText.Text = message
(标签文字使用的字体为Arial)
然而,我得到下一个结果:
这不是我想要的列格式显示。你知道为什么我会收到消息形式的未格式化字符串吗?
谢谢!
正如 jmcilhinney 在问题评论中指出的那样,我使用的是比例字体(例如,Arial 字体类型),它无法适合等间距的列。
解决方案是使用等宽字体类型(例如 Consolas):
我正在尝试格式化字符串列表,以便将项目显示为两列,每列长度为 40。为此,我正在使用下一个函数:
Private Function GetNamesString(names As List(Of String)) As String
Dim str As String = String.Empty
For i = 0 To names.Count - 2 Step 2
str += $"{names(i),-40}{names(i + 1),-40}"
str += $"{vbCrLf}"
Next
Return str
End Function
我建立消息如下:
Dim message As String = $"Removing master species {gbl.EditSpecies.Name} implies that next {names.Count} species must be also removed:{vbCrLf}{vbCrLf}"
message += GetNamesString(names)
message += $"{vbCrLf}{vbCrLf}Do you want to remove above species besides {gbl.EditSpecies.Name}?"
获取下一个字符串:
Removing master species Fe+3 implies that next 106 species must be also removed:
Beidellite_SBld-1(4.576H2O) Ca2Fe2O5(s)
CaFe2O4(s) C4FH13
C3FH6 Ettringite-Fe
Monosulfate-Fe Smectite_MX80(5.189H2O)
...
最后,我显示消息形式:
frmShowMessage.Show(message, "Remove species", enumMessageIcon.Warning, enumMessageButton.YesNo)
直接在标签文字中显示message
:lblMessageText.Text = message
(标签文字使用的字体为Arial)
然而,我得到下一个结果:
这不是我想要的列格式显示。你知道为什么我会收到消息形式的未格式化字符串吗?
谢谢!
正如 jmcilhinney 在问题评论中指出的那样,我使用的是比例字体(例如,Arial 字体类型),它无法适合等间距的列。
解决方案是使用等宽字体类型(例如 Consolas):