这似乎是一件容易的事。我只想弹出一个文本窗口并显示两列数据——左侧的描述和右侧显示的相应值。我没有过多地使用 Forms,所以我只是抓住了第一个看起来合适的控件,一个 TextBox。我认为使用制表符是创建第二列的一种简单方法,但我发现事情并不那么好。
我尝试这样做的方式似乎有两个问题(见下文)。首先,我在许多网站上读到 MeasureString 函数不是很精确,因为字体非常复杂,还有字距调整问题等等。第二个是我不知道 TextBox 控件在下面用作它的 StringFormat 是什么。
无论如何,结果是我总是在右列中得到一个选项卡关闭的项目。我想我可以滚动自己的文本窗口并自己做所有事情,但是天哪,难道没有一种简单的方法可以做到这一点吗?
TextBox textBox = new TextBox();
textBox.Font = new Font("Calibri", 11);
textBox.Dock = DockStyle.Fill;
textBox.Multiline = true;
textBox.WordWrap = false;
textBox.ScrollBars = ScrollBars.Vertical;
Form form = new Form();
form.Text = "Recipe";
form.Size = new Size(400, 600);
form.FormBorderStyle = FormBorderStyle.Sizable;
form.StartPosition = FormStartPosition.CenterScreen;
form.Controls.Add(textBox);
Graphics g = form.CreateGraphics();
float targetWidth = 230;
foreach (PropertyInfo property in properties)
{
string text = String.Format("{0}:\t", Description);
while (g.MeasureString(text,textBox.Font).Width < targetWidth)
text += "\t";
textBox.AppendText(text + value.ToString() + "\n");
}
g.Dispose();
form.ShowDialog();