winforms C#表单类扩展问题

ergxz8rk  于 2023-05-29  发布在  C#
关注(0)|答案(2)|浏览(147)

我目前的Form1.cs太大了,所以我试图把它们分成多个小文件,这样代码更容易阅读。然而,我的方法可以满足我的需要,但同时也很烦人,因为我的每一个扩展都被视为一个表单。因此,如果我双击扩展,弹出的是一个表单而不是类。所以我必须继续点击然后按F7。请提供解决方案
Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            test();
        }
    }
}

Form1_Ext.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2
{
    public partial class Form1 
    {
        public void test()
        {
            Console.WriteLine("hello");
        }
    }
}

Form1.Desginer.cs

namespace WindowsFormsApplication2
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form1";
        }

        #endregion
    }
}

请看红框,任何扩展类都被视为它自己的形式而不是类。在min时,它应该指向Form1.cs,但它不是。

bbmckpt7

bbmckpt71#

我不知道你在问什么。但是,如果您希望通过在Form1类上使用partial关键字将Form代码拆分为多个文件,并使每个文件显示为 Solution Explorer 树中Form1条目的子项,则需要手动编辑 WindowsFormsApplication2.csproj 文件。在此之前,请确保您备份了它(如果不知道您正在做什么,很容易破坏您的项目)。
如果你看一下这个文件,你会看到这样的东西:

<ItemGroup>
    <Compile Include="Form1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form1.Designer.cs">
      <DependentUpon>Form1.cs</DependentUpon>
    </Compile>
    <Compile Include="Form1_Ext.cs" />
    <!-- More entries -->
  </ItemGroup>

您要做的是使“Form1_Ext.cs”DependentUpon 成为主表单条目。所以改变:

<Compile Include="Form1_Ext.cs" />

致:

<Compile Include="Form1_Ext.cs">
  <DependentUpon>Form1.cs</DependentUpon>
</Compile>

我想这就是你要问的。

jpfvwuh4

jpfvwuh42#

我希望你已经解决了。如果你感兴趣,这段代码似乎可以工作:

<Compile Include="Form1.Extra.Designer.cs"><DependentUpon>Form1.cs</DependentUpon>
</Compile>

显然,您需要使用“设计师”关键字。
再见。

相关问题