web-dev-qa-db-ja.com

プログラムでラベルをWindowsフォームに追加する(ラベルの長さは?)

私のコードでは、次のラベルを作成します。

Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);

Nameという文字列はこの前に定義されており、長さは約50文字です。ただし、フォームのラベルには最初の15個しか表示されません。ラベルのMaximumSizeをいじってみましたが、役に立ちませんでした。

9
Wilson

AutoSizeプロパティを追加してみてください。

namelabel.AutoSize = true;

デザインエディタを使用してフォームにラベルを配置すると、このプロパティはデフォルトでtrueになりますが、コードでラベルを作成した場合、デフォルトはfalseになります。

9
LarsTech

プロパティAutoSize = trueを試してください。

MSDN refs

もう1つの方法は、GraphicsクラスのMeasureStringメソッドを使用することです。

Graphics e =  nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;
3
Steve

プロパティ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" 
    });
0
Dipesh adhikari