所以,我在Visual C#2010 Express中创建了一个程序。完成了足够的工作,并且非常适合我的第一次语言尝试。但后来我愚蠢地决定,“嘿,这个程序在发送之前需要一个确认对话框!”所以我编写了这个函数,然后我进入自动生成的代码来适当地绑定所述函数。
KABOOM!
现在,表单设计器显示一个空白表单,所有这些闪亮的组件都已从设计器和自动生成的代码中删除。在这样一个简单的程序中,大约有80%的工作投入其中。
现在,在NetBeans中,我会右键单击文件的选项卡,然后返回到以前的版本,可能会丢失大约15分钟的工作。这是一个非常明显的概念,我只是不确定在Visual Studio中哪里可以找到文件历史记录。那么,相同的地方在哪里,我可以恢复工作?
(我还设法通过撤消一大堆来恢复我的代码 - 但是设计师没有看到它,编译器也没有看到它,所以它仍然构建为空白形式。)
答案 0 :(得分:2)
一个是永远不会修改设计器生成的代码。实际上,C#有一个名为partial classes的概念,它允许您修改生成的类,而无需修改生成的文件。
其次,Visual Studio本身没有内置的源代码控制 - 你需要选择你喜欢的那个并且勤于使用它。一些最流行的是git,subversion,mercurial和Team Foundation Server。我个人使用svn,但其他人也很好。避免使用名为Visual SourceSafe(VSS)的东西。
答案 1 :(得分:2)
从它的声音中,我会说你试过ctrl-z直到你的代码中的某个点,但不是在设计师中呢?
在您放置代码的代码隐藏文件中执行多个“撤消”是一回事,在设计器中执行“撤消”是另一回事。
希望你还没有关闭视觉工作室,在设计视图中查看你现在空白的表单,并在那里尝试一堆ctrl-z,可能会有所帮助。
答案 2 :(得分: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);
答案 3 :(得分:1)
我有类似的效果:代码没有丢失,因为项目编译完美但我在设计器中只有一个空白表单。
这是因为表单是从另一个表单继承的,我在基本表单的Load事件中添加了一行:this.MdiParent = Application.OpenForms(“BaseForm”);
删除此行(并重新编译)后,我可以再次访问descendig表单的设计。
答案 4 :(得分:0)
你可以做的一件事,这次不会对你有所帮助,但对未来可能是一个好主意 - 如果你复制你的代码很多(就像我一样),可以获得其中一个剪贴板保护程序 - 比如{{ 3}}(这是轻量级的,简单的,很棒的)。
然后,如果你意识到你无法撤消你所做的事情,那么你可以通过运行“被困”文本获得第二次机会,看看你想要的是否可能就在那里。
另一个不错的选择是尝试像ClipTrap这样的东西,它会随时随地保存任何已更改文件(或文件夹中的文件)的副本。这可以为您提供代码文件的备份,甚至是整个项目的备份 - 每隔五分钟或每分钟一次,只要更改了某些内容。很棒的计划。这是源控制的某种方式,或者至少是源备份。
(不,我不是任何一个应用程序的创作者)
但是,对于您的特定问题,如果您的designer.cs页面中的代码仍然存在 - 也许您只是删除了引用或命名空间。确保名称空间匹配,并确保在表单的代码文件中调用InitializeComponent();
函数(这就是将所有设计器控件放在表单上的内容,你知道)。
答案 5 :(得分:0)
在代码隐藏文件中,单击“撤消”,而不是在设计器窗口中。接受警告,当代码返回时,表单应该恢复正常,Visual Studio 2015。