私のコードでは、次のラベルを作成します。
Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);
Nameという文字列はこの前に定義されており、長さは約50文字です。ただし、フォームのラベルには最初の15個しか表示されません。ラベルのMaximumSizeをいじってみましたが、役に立ちませんでした。
AutoSizeプロパティを追加してみてください。
namelabel.AutoSize = true;
デザインエディタを使用してフォームにラベルを配置すると、このプロパティはデフォルトでtrueになりますが、コードでラベルを作成した場合、デフォルトはfalseになります。
プロパティAutoSize = trueを試してください。
もう1つの方法は、GraphicsクラスのMeasureStringメソッドを使用することです。
Graphics e = nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;
プロパティLabel.AutoSize
を使用して、ラベルの幅を自動的に調整し、Label.Text
に格納されているすべてのコンテンツに適切に合わせることができます。
デザインエディタを使用してラベルを作成する場合、このプロパティはデフォルトでtrueになりますが、プログラムで独自にラベルを作成する場合、プロパティはデフォルトでになります。 )false。
namelabel.AutoSize = true;
もちろん、以下のようなものを使用してラベルの幅を手動で設定し、必要な幅を計算することもできます。
Graphics namelabel_g = namelabel.CreateGraphics ();
namelabel.Width = namelabel_g.MeasureString (
namelabel.Text, namelabel.Font
);
Label.AutoSize
の使用に関するドキュメントは、msdnにあります。
Graphics.MeasureString
に関するドキュメントはここにあります:
panel_saved.Controls.Add(
new Label
{
Location = new Point(1, 2),
Size = new System.Drawing.Size(43, 18),
BorderStyle = BorderStyle.FixedSingle,
Text = "yourdata"
});