11

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

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

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

4

4 に答える 4

9

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

namelabel.AutoSize = true;

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

于 2012-07-18T22:09:22.630 に答える
3

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

MSDN参照

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

Graphics e =  nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;
于 2012-07-18T22:09:54.423 に答える
1

このプロパティ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ここにあります:

于 2012-07-18T22:10:57.187 に答える
0
panel_saved.Controls.Add(
    new Label 
    { 
        Location = new Point(1, 2), 
        Size = new System.Drawing.Size(43, 18), 
        BorderStyle = BorderStyle.FixedSingle, 
        Text = "yourdata" 
    });
于 2016-11-15T09:07:24.197 に答える