1

因此,我在 Visual C# 2010 Express 中编写了一个程序。完成了足够的工作,对于我第一次尝试这门语言来说非常好。但后来我愚蠢地决定,“嘿,这个程序在我发出之前需要一个关闭的确认对话框!” 所以我编写了函数,然后我进入自动生成的代码以适当地绑定所述函数。

卡布姆!

现在,表单设计器显示一个空白表单,所有这些闪亮的组件都已从设计器和自动生成的代码中删除。在这样一个简单的程序中,我投入了大约 80% 的工作。

现在,在 NetBeans 中,我会右键单击文件的选项卡,然后返回到以前的版本,这可能会浪费大约 15 分钟的工作时间。这是一个非常明显的概念,我只是不确定在 Visual Studio 中的哪里可以找到文件历史记录。那么,等价物在哪里可以让我找回我的工作呢?

(我还设法通过撤消一大堆代码来取回我的代码 - 但设计者没有看到它,编译器也没有看到它,所以它仍然构建为一个空白表单。)

4

6 回答 6

2

可悲的是,你刚刚学到了一些东西。

一是永远,永远修改设计师生成的代码。事实上,C# 有一个称为部分类的概念,它允许您修改生成的类而无需修改生成的文件。

其次,Visual Studio 本身并没有内置的源代码控制——你需要选择你喜欢的那个并勤奋地使用它。其中最流行的是 git、subversion、mercurial 和 Team Foundation Server。我个人使用svn,但其他的也很好。避免使用称为 Visual SourceSafe (VSS) 的东西。

于 2012-09-18T01:30:38.557 回答
2

从它的声音来看,我会说您尝试 ctrl-z 直到代码中的某个点,但不是在设计器中?

在放置代码的代码隐藏文件中执行多个“撤消”是一回事,在设计器中执行“撤消”是另一回事。

希望您还没有关闭视觉工作室,在设计视图中查看您现在的空白表单,并在那里尝试一堆 ctrl-z 按下,可能会奏效。

于 2012-09-18T01:33:50.133 回答
1

我有类似的效果:代码没有丢失,因为项目编译得很好,但我在设计器中只有一个空白表格。

这是因为表单是从另一个表单继承而来的,我在基本表单的 Load 事件中添加了以下行: this.MdiParent = Application.OpenForms("BaseForm");

删除此行(并重新编译)后,我可以再次访问descendig 表单的设计。

于 2013-03-28T11:01:59.450 回答
1

实际上控件不会从设计代码或初始化组件()中丢失,请确保是否检查

初始化 Component() { this.controls.add("控件所在的位置") }

示例:1-this.Controls.Add(this.panel1.label1); 2-this.Controls.Add(this.panel1.label2);

无论是哪种形式,您都可以像下面这样写

应该写在 Initialize Component()

 this.Controls.Add(this.label1);
于 2013-02-01T06:51:58.383 回答
0

您可以做的一件事,这一次对您没有帮助,但对于将来可能是个好主意-如果您大量复制代码(像我一样),请获取其中一个剪贴板保护程序-例如ClipTrap(轻量级,简单,很棒)。

然后,如果您意识到您无法撤消您所做的事情,那么您将获得第二次机会,通过运行“被困”文本来查看您想要的内容是否就在那里。

另一个不错的选择是尝试使用 AutoVer 之类的方法,它会根据需要随时保存任何更改的文件(或文件夹中的文件)的副本。这可以为您提供您的代码文件甚至整个项目的备份——每五分钟一次,或者只要有更改,每分钟一次。很棒的节目。这是某种形式的源代码控制,或者至少是源代码备份。

(不,我不是任何一个应用程序的作者)

但是,对于您的特定问题,如果代码仍然存在于您的 Designer.cs 页面中 - 也许您只是删除了引用或命名空间。确保命名空间匹配,并确保您在表单的代码文件InitializeComponent();中调用了该函数(这就是将所有设计器的控件放置到表单上的原因,您知道)。

于 2013-05-02T02:59:17.907 回答
0

在文件后面的代码中单击“撤消”,而不是在设计器窗口中。接受警告,当代码返回时,表单应该恢复正常,Visual Studio 2015。

于 2016-09-29T22:05:10.310 回答