これは簡単なことのように思えました。テキスト ウィンドウをポップアップ表示して、2 列のデータ (左側に説明、右側に対応する値) を表示したかっただけです。私は Forms をあまり扱っていないので、適切と思われる最初のコントロールである TextBox を取得しました。タブを使用すると 2 番目の列を簡単に作成できると思いましたが、うまくいかないことがわかりました。
私がこれをやろうとした方法には 2 つの問題があるようです (以下を参照)。まず、多くの Web サイトで、フォントが複雑で、カーニングの問題などにより、MeasureString 関数があまり正確ではないことを読みました。2 つ目は、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();