我正在创建类似MessageBox(MessageBoxCustom)。 我希望在一个单独的文件中有一个带有设计器支持的表单,以便我可以通过Visual Studio(MessageBoxCustomDialog)修改外观。
我还想通过MyMessageBox外部的代码使这个MessageBoxCustomDialog无法访问,并且我正在嵌套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
{
}
}
}
答案 0 :(得分:2)
Visual Studio Designer无法帮助您设计嵌套类。它不是为此而做的。它检查文件中第一个最外层类的类型,然后决定使用哪个设计器。
如果只是设计表单的布局,我建议像往常一样设计它。完成项目后,您可以通过外部类(在两个文件中)包围该类,并将其设为私有。
当您完成工作时,只需将对话框类复制并粘贴到外部类中并将其设为私有。如果你必须重新设计它,它只需要复制和粘贴。
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
}
}
答案 1 :(得分:0)
使MessageBoxCustomDialog成为私有的部分内部类
private partial class MessageBoxCustomDialog : Form
{}
答案 2 :(得分: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 [限制部分]