【发布时间】:2008-09-16 13:32:29
【问题描述】:
这似乎是一件容易的事。我只想弹出一个文本窗口并显示两列数据——左侧的描述和右侧显示的相应值。我没有过多地使用 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();
【问题讨论】:
标签: c# winforms controls formatting