6

現時点では、これが次の質問と重複している可能性があることを明確にし います。

問題は非常に単純です。

autosize が true に設定された右揃えのラベルがあります。予期される動作は、テキストが増加しても右座標が変更されないことです。しかし、それはそうではありません。左の座標は、変更されないままのものです。

私のアプリはちょっと小さいので、パネルなどにコントロールを配置したくありません。そのため、ラベル プロパティのみを含むすべてのソリューションを試しました。機能した唯一の方法は、autosize を false に設定してサイズを大きくすることです。(質問番号 1692383 の受け入れられた解決策)。しかし、それは本当に醜いです!それは本当に避けたいです。

他に考えられる解決策はありますか?

4

1 に答える 1

8

1 つの解決策は、フォーム コンストラクターでラベルの右マージンをキャプチャし、ラベルイベントで、最初の右マージン、ラベルの current 、およびラベルの Parent's currentSizeChangedに基づいて位置をリセットすることです。WidthWidth

これは、フォームのサイズ変更を処理するために、ラベルが右側に固定されていることも前提としています。

private readonly int _rightMargin;

public Form1()
{
    InitializeComponent();

    _rightMargin = label1.Parent.Width - label1.Right;
}

private void label1_SizeChanged(object sender, EventArgs e)
{
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top);
}
于 2010-10-21T14:24:17.550 に答える