C# 关于申报的缺失部分
当我试着运行我的程序时,我在网上发现了这个程序,它似乎是用visual c 2005编译的,我用的是visual c 2010 我在编译之前遇到了这两个错误 错误2“RecursiveSearchCS.Form1.components”和 'RecursiveSearchCS.Form1.components'C:\Users\jacr\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs 46 21 WindowsFormsApplication1 错误1以下方法或方法之间的调用不明确 属性:“RecursiveSearchCS.Form1.InitializeComponent()”和 'RecursiveSearchCS.Form1.InitializeComponent()'C:\Users\jacr\AppData\Local\Temporary 项目\WindowsFormsApplication1\Form1.cs 32 13 Windows窗体应用程序1 当我试图用错误编译它时,我得到了这个 错误1在类型的声明中缺少部分修饰符 '递归搜索cs.Form1';此类型的另一个部分声明 存在C:\Users\jacr\AppData\Local\Temporary Projects\WindowsFormsApplication1t\Form1.cs 14 18 WindowsFormsApplication1t 我到底应该怎么做?我的程序在目录中搜索文件文本文件,但似乎我得到了这个错误…这是C# 关于申报的缺失部分,c#,C#,当我试着运行我的程序时,我在网上发现了这个程序,它似乎是用visual c 2005编译的,我用的是visual c 2010 我在编译之前遇到了这两个错误 错误2“RecursiveSearchCS.Form1.components”和 'RecursiveSearchCS.Form1.components'C:\Users\jacr\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs 46 21 Windows
form1.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace RecursiveSearchCS
{
public class Form1 : System.Windows.Forms.Form
{
internal System.Windows.Forms.Button btnSearch;
internal System.Windows.Forms.TextBox txtFile;
internal System.Windows.Forms.Label lblFile;
internal System.Windows.Forms.Label lblDirectory;
internal System.Windows.Forms.ListBox lstFilesFound;
internal System.Windows.Forms.ComboBox cboDirectory;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.btnSearch = new System.Windows.Forms.Button();
this.txtFile = new System.Windows.Forms.TextBox();
this.lblFile = new System.Windows.Forms.Label();
this.lblDirectory = new System.Windows.Forms.Label();
this.lstFilesFound = new System.Windows.Forms.ListBox();
this.cboDirectory = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
this.btnSearch.Location = new System.Drawing.Point(608, 248);
this.btnSearch.Name = "btnSearch";
this.btnSearch.TabIndex = 0;
this.btnSearch.Text = "Search";
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
this.txtFile.Location = new System.Drawing.Point(8, 40);
this.txtFile.Name = "txtFile";
this.txtFile.Size = new System.Drawing.Size(120, 20);
this.txtFile.TabIndex = 4;
this.txtFile.Text = "*.dll";
this.lblFile.Location = new System.Drawing.Point(8, 16);
this.lblFile.Name = "lblFile";
this.lblFile.Size = new System.Drawing.Size(144, 16);
this.lblFile.TabIndex = 5;
this.lblFile.Text = "Search for files containing:";
this.lblDirectory.Location = new System.Drawing.Point(8, 96);
this.lblDirectory.Name = "lblDirectory";
this.lblDirectory.Size = new System.Drawing.Size(120, 23);
this.lblDirectory.TabIndex = 3;
this.lblDirectory.Text = "Look In:";
//
// lstFilesFound
//
this.lstFilesFound.Location = new System.Drawing.Point(152, 8);
this.lstFilesFound.Name = "lstFilesFound";
this.lstFilesFound.Size = new System.Drawing.Size(528, 225);
this.lstFilesFound.TabIndex = 1;
this.cboDirectory.DropDownWidth = 112;
this.cboDirectory.Location = new System.Drawing.Point(8, 128);
this.cboDirectory.Name = "cboDirectory";
this.cboDirectory.Size = new System.Drawing.Size(120, 21);
this.cboDirectory.TabIndex = 2;
this.cboDirectory.Text = "ComboBox1";
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(688, 277);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.btnSearch,
this.txtFile,
this.lblFile,
this.lblDirectory,
this.lstFilesFound,
this.cboDirectory});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnSearch_Click(object sender, System.EventArgs e)
{
lstFilesFound.Items.Clear();
txtFile.Enabled = false;
cboDirectory.Enabled = false;
btnSearch.Text = "Searching...";
this.Cursor = Cursors.WaitCursor;
Application.DoEvents();
DirSearch(cboDirectory.Text);
btnSearch.Text = "Search";
this.Cursor = Cursors.Default;
txtFile.Enabled = true;
cboDirectory.Enabled = true;
}
private void Form1_Load(object sender, System.EventArgs e)
{
cboDirectory.Items.Clear();
foreach (string s in Directory.GetLogicalDrives())
{
cboDirectory.Items.Add(s);
}
cboDirectory.Text = "C:\\";
}
void DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, txtFile.Text))
{
lstFilesFound.Items.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
}
}
使用
部分
关键字扩展您的类
声明:
public partial class Form1 : System.Windows.Forms.Form
尝试使用关键字like
public partial class Form1 : System.Windows.Forms.Form
编辑:看起来您有两份此项目的副本
C:\Users\jacr\AppData\Local\Temporary
项目\WindowsFormsApplication1\Form1.cs
及
C:\Users\jacr\AppData\Local\Temporary
Projects\WindowsFormsApplication1t\Form1.cs
因为你在同一个问题上问了他们一个问题,所以就把这个项目丢掉吧。可能这就是原因。您给出的代码实际上编译得非常好 但是,看看错误,您似乎有两个副本:
C:\Users\jacr\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs
C:\Users\jacr\AppData\Local\Temporary Projects\WindowsFormsApplication1t\Form1.cs
注意第二个目录名末尾的“t”
扔掉这些副本中的一份,应该没问题。(您应该能够在Visual Studio中删除它-我怀疑您可以同时看到
Form1.cs
文件…正如大多数人已经告诉您的那样,您需要在类声明中使用partial
-关键字
public partial class Form1 : System.Windows.Forms.Form
使用Windows窗体时,Visal Studio会将窗体拆分为多个文件(MyForm.cs用于代码,MyForm.Designer.cs用于UI元素的自动生成代码,有时还附带一个资源文件)。由于该类被拆分为多个文件,因此需要使用partial
-关键字来告诉编译器在完成该类之前继续查找更多文件
有关
部分
-关键字的更多信息可在此处找到:@hanna:“它不工作”永远是不够的信息。请提供更多详细信息。它显示此代码公共窗体1()有错误{InitializeComponent();}@Habib错误3“RecursiveSearchCS.Form1.components”和“RecursiveSearchCS.Form1.components”之间的歧义C:\Users\jacr\documents\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 46 21WindowsFormsApplication1@SonerGönül我删除了另一个副本,现在我得到了这个…错误1类型“RecursiveSearchCS.Form1”已包含“组件”的定义C:\Users\jacr\documents\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 25 49 WindowsFormsApplication1i确实了解了它,现在出现了此错误。……错误1类型“RecursiveSearchCS.Form1”已包含组件的定义“组件”C:\Users\jacr\documents\visual studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 25 49WindowsFormsApplication1@hanna当前位置老实说,我们无法判断您的项目在哪一行,或者正在进行什么。我建议你从头开始。正如我所说,我刚刚编译了代码,它很好。听起来您在创建项目或复制文件时可能做了一些奇怪的事情。我打开了一个新项目,转到解决方案资源管理器,单击form1.cs,然后将我的代码粘贴到视图代码上……但我仍然收到这些错误,你是如何编译的???@hanna:我刚刚把代码保存到一个文件中,然后运行了csc Test.cs
。问题可能是您正在将其放入已有的代码中,其中已有Form1.Designer.cs
。重新开始,这次只需将文件复制到适当的位置,并使用“添加现有项”添加类。我担心在这里带您经历这一切是一件痛苦的事情,但基本上您不想要任何VisualStudio提供的东西。启动一个新项目,删除它开始使用的所有源文件,只需按原样添加文件,而不是通过“添加新表单”。