不能在c# windows窗体应用程序项目中更改启动窗体

本文关键字:窗体 启动 项目 应用程序 windows 不能 | 更新日期: 2023-09-27 18:02:13

在一个windows应用程序项目(c#, Visual Studio 2010)中,我只是想更改为新的启动形式(保留已经测试过的旧的启动形式)。在program.cs中,我注释掉了"旧的"形式,并引入了新的"clone":

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

EDIT-UPDATE: 克隆/重构新表单的最佳实践是什么?

我忘了我是怎么写出这个新表格的。我想我从"添加新项目"开始,给它起了新名字,然后保存。然后,我手动复制了一些原始代码,并引入了新的datagridview等,并从新表单中删除了先前的用户界面控件。我总是觉得让"版本1"继续工作并引入一个从"旧"版本扩展而来的新东西有点尴尬。"专业人士"是如何做这种事情的?

不能在c# windows窗体应用程序项目中更改启动窗体

这是运行您想要的表单的正确方式。因此,必须有一个问题,如何Main()与您的新表单相关。比如它在错误的命名空间中,或者类似的东西。

通过尝试从现有的启动表单运行您的表单实例来检查它:

Formname frm1 = new Formname();
frm1.show();

我假设您复制了Form1的所有文件(最多可能有三个:Form1.cs Form1.Designer.cs and Form1.resx)。那么你在新的*.Designer.cs中更改了类名吗?To GridForm ?

除了这个问题,你在Main中的代码应该没有问题。你可以通过在项目中添加一个全新的表单并引用它来测试它