3

クラス(MessageBoxCustom)のようなMessageBoxを作成しています。Visual Studio(MessageBoxCustomDialog)を使用して外観を変更できるように、デザイナーがサポートするフォームを別のファイルに入れたいと思います。

また、このMessageBoxCustomDialogをMyMessageBoxの外部のコードで到達できないようにしたいので、MessageBoxCustomDialogをネストしています。別のファイルに移動したいので、デザイナーのサポートが必要です。多分部分的なクラスを使用していますか?階層はどのようになりますか?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace System.Windows.Forms
{
    public static class MessageBoxCustom
    {
        public static void Show()
        {
            (new MessageBoxCustomDialog()).ShowDialog();
        }

        private class MessageBoxCustomDialog : Form
        {

        }
    }
}
4

3 に答える 3

2

Visual Studio デザイナは、入れ子になったクラスの設計には役立ちません。そのために作られているわけではありません。ファイル内の最初の最も外側のクラスの型をチェックし、使用するデザイナーを決定します。

フォームのレイアウトをデザインするだけの場合は、通常どおりにデザインすることをお勧めします。プロジェクトが終了したら、(両方のファイルで) 外部クラスでクラスを囲み、プライベートにすることができます。

作業が終わったら、ダイアログ クラスを外部クラスにコピー アンド ペーストしてプライベートにします。設計をやり直す必要がある場合は、コピーして貼り付けるだけです。

MessageBoxCustomDialog.cs:

namespace System.Windows.Forms
{
    // make sure this is the first class in the file (required by designer)
    public partial class MessageBoxCustomDialog : Form
    {
        public MessageBoxCustomDialog()
        {
            InitializeComponent();
        }
    }

    public static partial class MessageBoxCustom
    {
        public static void Show()
        {
            new MessageBoxCustomDialog().ShowDialog();
        }

        // put the MessageBoxCustomDialog class here when you are done
    }
}

MessageBoxCustomDialog.Designer.cs:

namespace System.Windows.Forms
{
    partial class MessageBoxCustomDialog
    {
        ...
    }

    partial class MessageBoxCustom
    {
        // put the MessageBoxCustomDialog class here when you are done
    }
}
于 2012-07-22T21:29:28.677 に答える
0

MessageBoxCustomDialog をプライベートな部分内部クラスにする

private partial class MessageBoxCustomDialog : Form
{}
于 2012-07-22T18:37:59.743 に答える
0

MessageBoxCustom同じスコープを持つパーシャルを作成する必要がありますMessageBoxCustomDialog

ファイル 1

using System.Windows.Forms;

namespace System.Windows.Forms
{
    public static partial class MessageBoxCustom
    {
        public static void Show()
        {
            (new MessageBoxCustomDialog()).ShowDialog();
        }

        private partial class MessageBoxCustomDialog : Form
        {

        }
    }
}

ファイル 2

using System.Windows.Forms;

namespace System.Windows.Forms
{
    public static partial class MessageBoxCustom
    {
        private partial class MessageBoxCustomDialog : Form
        {
            // designer code
        }
    }
}

このリンクが表示される場合がありますhttp://msdn.microsoft.com/en-us/library/wa80x488.aspx [制限セクション]

于 2012-07-22T18:43:46.557 に答える