在Windows应用程序项目(C#,Visual Studio 2010)中,我只想更改为一个新的启动表单(保留旧版本已经过测试)。在program.cs中,我注释掉了“旧”形式并引入了我的新“克隆”:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1()); // this working form uses ListBox
Application.Run(new GridForm()); // want this new form which uses DataGridView
}
Form1和GridForm都在同一个项目中,并且都具有相同的using指令。 (摘录如下):
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Xml.XPath;
using System.IO;
using System.Reflection;
using CBMI.Common;
using log4net;
using log4net.Config;
namespace CBMI.WinFormsUI
{
public partial class GridForm : Form
{
private string defaultRootFolder;
public static readonly ILog log = LogManager.GetLogger(typeof(GridForm));
public GridForm()
{
InitializeComponent();
}
看起来像一个荒谬简单的问题/问题,但我很难过。
EDIT-UPDATE:
在某种程度上,在克隆/“重构”过程中,我通过引入一个案例更改来搞砸新表单上的命名空间。通过尝试如下建议发现了这一点:
private void Form1_Load(object sender, EventArgs e)
{
CBMI.WinFormsUI.GridForm improvedForm = new CBMI.WinFormsUI.GridForm();
improvedForm.Show();
return;
Form1.cs的命名空间编码如下:
namespace CBMI.WinformsUI
GridForm.cs的命名空间编码如下(注意CamelCase):
namespace CBMI.WinFormsUI
编辑更新 :克隆/重构新表单的最佳做法是什么?
我忘记了我是如何破解新表格的。我想我开始通过“添加新项目”到项目,给它新名称并保存。然后我手动复制原始的一些代码并引入新的datagridview等,并从新表单中删除了先前的用户界面控件。我总是发现这有点尴尬试图让“版本1”工作并引入一个由“旧”构建的新扩展的东西。 “专业人士”如何做这类事情?
答案 0 :(得分:2)
这是运行所需表单的正确方法。因此,Main()与新表单的关系必须存在问题。就像它在错误的命名空间中,或者是那种效果。
通过尝试使用以下命令从现有启动表单运行您的表单来检查它:
Formname frm1 = new Formname();
frm1.show();
答案 1 :(得分:1)
我假设您复制了Form1
的所有文件(最多可能有三个文件:Form1.cs Form1.Designer.cs and Form1.resx
)。那么你是否更改了新*.Designer.cs
中的班级名称?到GridForm
?
除此问题外,Main
中的代码应该没有问题。您只需向项目中添加一个全新的表单并按照您的方式引用它即可对其进行测试。