1

tablelayoutpanel によって設計されたフォームがあります。

あるセルには、そのセルにドッキングされたパネルがあり、パネルには親パネルにドッキングされたラベルがあります。

ラベルの自動サイズ調整機能が false に設定されています。

フォームのサイズが変更された場合 (したがってパネルのサイズが変更された場合) に、label.text がカットされずにパネルに収まるように、ラベルのフォントのサイズは動的でなければなりません。

TextRenderer.MeasureText / measure string を試して、フォントの適切なサイズを見つけましたが、問題を解決できませんでした。

ありがとう。

4

1 に答える 1

2

このリンクに基づいて、役立つコード スニペットを作成しました。

using System.Drawing;

public partial class Form1 : Form
{
    public int initialWidth;
    public int initialHeight;
    public float initialFontSize;

    public Form1()
    {
        InitializeComponent();
        AutoScaleMode = AutoScaleMode.None;

        // Sets the initial size of the variables
        initialWidth = Width;
        initialHeight = Height;
        initialFontSize = LabelFont.Font.Size;
        LabelFont.Resize += LabelFont_Resize;
    }

    private void LabelFont_Resize(object sender, EventArgs e)
    {
        SuspendLayout();
        // Get the proportionality of the resize
        float proportionalNewWidth = (float)Width / initialWidth;
        float proportionalNewHeight = (float)Height / initialHeight;

        // Calculate the current font size
        LabelFont.Font = new Font(LabelFont.Font.FontFamily, initialFontSize * 
            (proportionalNewWidth > proportionalNewHeight ? proportionalNewHeight : proportionalNewWidth), 
            LabelFont.Font.Style);
        ResumeLayout();
    }

}

ラベルのサイズ変更のこの方法を使用して、変更の比率を決定し、それから新しいフォントを定義します。これで問題が解決することを願っています。

于 2012-09-14T19:00:09.677 に答える