0

MonthCalendar次のように、別のダイアログにを表示する必要があります。

ここに画像の説明を入力

問題は、このカレンダーの表示がアプリケーションが実行されているシステムに依存することです。その結果、次のようなバリエーションが生じます (同じアプリケーションから、別の PC で):

ここに画像の説明を入力

私が理解しているように、これは、アプリケーションがたまたま実行されている視覚的なスタイルまたはテーマに依存します。問題は、カレンダーを配置する必要があるフォームの適切なサイズを計算するにはどうすればよいか、または別の方法で、テーマが異なる複数のシステムでこれをエレガントに見せるにはどうすればよいかということです。

container特定のテーマ (最初の写真) に適した (ハードコードされた) サイズが与えられたフォーム () にカレンダーを配置する現在のコードには満足していません。

private static Form SetUpCalendar()
{
    var calendar = new MonthCalendar
                {
                    MaxSelectionCount = maxSelectionCount,
                    BackColor = SystemColors.Info,
                    CalendarDimensions = new Size(1, 1),
                    // (..etc...)                    
                };

    var container = new Form
                {
                    FormBorderStyle = FormBorderStyle.FixedDialog,
                    Size = new Size(calendar.Width + 74, calendar.Height + 47)
                };

    container.Controls.AddRange(new Control[] {calendar});

    return container;
}

フォームのサイズをカレンダーに合わせて自動的に調整する方法を見つけることができませんでした。これを改善する方法についてのヒントをいただければ幸いです。

4

1 に答える 1

4

フォームのAutoSizeプロパティを true に設定し、AutoSizeModeGrowAndShrinkに設定しないのはなぜですか? コントロールの周りのスペースをなくしたい場合は、margin プロパティも設定する必要があります。

于 2013-03-22T15:27:11.513 に答える