【问题标题】:Cannot change startup form in c# windows form application projectc# windows窗体应用程序项目中无法更改启动窗体
【发布时间】:2011-07-14 21:33:17
【问题描述】:

在 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 指令。 (sn-p 如下):

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();
    }

似乎是一个非常简单的问题/问题,但我很难过。

编辑更新:

不知何故,在克隆/“重构”过程中,我通过引入大小写更改弄乱了新表单上的命名空间。这是通过尝试您的建议发现的:

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# winforms forms startup


【解决方案1】:

这是运行所需表单的正确方法。因此,Main() 与您的新表单的关系肯定存在问题。就像它在错误的命名空间中一样,或者类似的东西。

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

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

【讨论】:

  • 感谢珍贵的罗伊。当我尝试您的建议时,请参阅原始线程上的 EDIT-UPDATE。
  • 听起来您的默认命名空间与您实际使用的命名空间不同。如果你去应用程序控制台,就像你看到的here,它是正确的吗?当您创建一个新表单时,它应该会出现这种情况。
【解决方案2】:

我假设您复制了Form1 的所有文件(最多可能有三个:Form1.cs Form1.Designer.cs and Form1.resx)。那你是不是把新*.Designer.cs里面的类名改了?给GridForm

除了这个问题,你Main中的代码应该没有问题。您只需向项目添加一个全新的表单并像您一样引用它即可对其进行测试。

【讨论】:

    最近更新 更多