我将值添加到ListBox,
for(int i = 0; i < 2; ++i)
{
lbBeamValue.Items.Add("Beam " + i.ToString() + " : " + value1[i] + " Angle " + i.ToString() + " : " + value2[i]);
}
显示如下:
Beam 0: 0.12 Angle 0: 0.65
Beam 1: 10.113213 Angle 1: 0.23
有没有办法确保Angle
在每一行都对齐?像:
Beam 0: 0.12 Angle 0: 0.65
Beam 1: 10.113213 Angle 1: 0.23
答案 0 :(得分:2)
答案 1 :(得分:0)
没有简单的控件可以让你使用标签;所以你需要一个控件,比如ListView
有列,或者你需要选择一个固定大小的字体(比如Consolas
)并用string.PadLeft
和{填充每个项目给定长度{1}}:
string.PadRight
注意lbBeamValue.Font = new Font("Consolas", 8f);
for (int i = 0; i < 2; ++i)
{
listBox2.Items.Add("Beam " + (i).ToString("#0").PadLeft(2) + " : " +
value1[i].ToString().PadRight(11) + " Angle " + i.ToString() + " : " +
value2[i]);
};
还允许您使用填充构建复杂的字符串。
答案 2 :(得分:0)
列表框仍然允许使用标签。你可以这样做:
public Form1 ()
{
InitializeComponent ();
// ....
int [] MyTabs = {20,70,130};
SetListTabs (lbMessages, MyTabs);
}
private void btnAddTabbed_Click (object sender, EventArgs e)
{
lbMessages.Items.Add ("1\t2\t3\t4");
lbMessages.Items.Add ("40\t50\t60\t70");
lbMessages.Items.Add ("100\t200\t300\t400");
}
private void SetListTabs (ListBox lb, IEnumerable<int> newTabs)
{
lb.UseCustomTabOffsets = true;
ListBox.IntegerCollection lbTabs = lb.CustomTabOffsets;
lbTabs.Clear ();
foreach (int tab in newTabs)
{
lbTabs.Add (tab);
}
}
private void btnAddTabbed_Click (object sender, EventArgs e)
{
lbMessages.Items.Add ("1\t2\t3\t4");
lbMessages.Items.Add ("40\t50\t60\t70");
lbMessages.Items.Add ("100\t200\t300\t400");
}
但是,当有更好的选项(如具有正确标头支持的ListView)存在时,我不得不问为什么要这样做。我想快速入侵,或对现有应用程序进行微小更改改造,那么它有点防御,但ListView会更好。