C# 复制窗体问题完美解决办法

gzmxuyl 2016-09-20 02:02:56
在VS2008、2010、2012等版本中均存在一个问题:
根据其它编程工具的设计经验,在一个项目中多个窗体内容相似,只需做好一个基础窗体,其它窗体直接复制粘贴修改类名后就完成设计了。然而想想是美好的,事实是残酷的!一旦你这样做了,编译却总是通不过,.会提示N多错误。
经过多次折腾尝试摸索,得到正确完美的解决办法为:
1、在解决方案资源管理器中选择要复制的窗体右击,复制;
2、找到解决方案资源管理器中需要粘贴的位置右击,粘贴;
3、鼠标指定刚粘贴的窗体右击,重命名(假设原为XXXX改为YYYY),按提示完成;
4、打开窗体代码,修改public partial class XXXX : Form中的XXXX为新窗体类名YYYY。
重要:窗体初始化模块中的XXXX也相应修改为YYYY
public XXXX()
{
InitializeComponent();
}
5、异常重要:
打开窗体设计器代码YYYY.Designer.cs,修改partial class XXXX : Form 中的XXXX为新窗体类名YYYY。
更重要而不易找到的问题:
修改private void InitializeComponent() 中System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(XXXX))一行中的XXXX为YYYY;
6、最后,右击解决方案资源管理器中的本项目,清理!!!运行,OK,大功告成!
注:也可以根据需要修改命名空间啊,哈哈!
...全文
2574 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2016-09-21
  • 打赏
  • 举报
回复
最好使用用户控件或者继承,不要复制
cheng2005 2016-09-21
  • 打赏
  • 举报
回复
如果你的东西真的很类似你直接导出一个模板不就可以了,哪来这么多麻烦事,10秒钟就解决了。
xhk008 2016-09-21
  • 打赏
  • 举报
回复
反正我都是Ctrl+C Ctrl+V
白衣如花 2016-09-21
  • 打赏
  • 举报
回复
这些自己多总结还是很好的 我复制一般是设计器上ctrl+a,ctrl+c 然后新窗体ctrl+v,并不需要改什么namespace,什么类名,什么public
zbdzjx 2016-09-21
  • 打赏
  • 举报
回复
近来用VS2015写个小程序,就是这样复制、粘贴的。但typeof(XXXX)这段没改,后来也没问题,界面控件改动了,这段会自动变。 但遇到了一个BUG,不知是VS2015的问题还是我安装或操作的问题。 问题就是:将新窗体YYYY中的一个控件改名,例如button1改成button2,原来button1有click事件,我就在属性窗口中,将button1的click事件后面的文字删除,这样,就取消了控件与事件的关连。将button1的name改成button2,然后再到代码中,将button1_Click函数名改成button2_Click。再到属性窗口中,button2的click事件后面下拉选择button2_Click,将控件与事件关连。接下来,到代码中看button2_Click函数,会有很小的机率,函数中内容被清空。后来没办法了,就在代码中将函数名改了,再到Designer.cs中将对应的函数名也改掉。
crystal_lz 2016-09-21
  • 打赏
  • 举报
回复 1
根据其它编程工具的设计经验,在一个项目中多个窗体内容相似,只需做好一个基础窗体,其它窗体直接复制粘贴修改类名后就完成设计了 那就都用用一个窗体不就完了吗 比如经常遇到 数据添加 和 数据编辑 的窗体 他们唯一不同的就是窗体的Text不一样而已 没必要做成两个窗体 一个就够了 如果真有 其他细节不一样的地方 那么把公共部分 定义成一个UserControl 或者 写好一个窗体 其他窗体继承
  • 打赏
  • 举报
回复
引用 楼主 gzmxuyl 的回复:
在VS2008、2010、2012等版本中均存在一个问题: 根据其它编程工具的设计经验,在一个项目中多个窗体内容相似,只需做好一个基础窗体,其它窗体直接复制粘贴修改类名后就完成设计了。
你的所有“设计经验”都是刚刚开始初学编程的阶段的经验么? 假设你一个所谓的“基础窗体已经开发了1个月,修改了100次,有10个”其它窗体“是复制了它的文件并且也修改文件内容上几十处内容,那么每当你修改”基础窗体“文件时,又是怎么拷贝文件的? 这个做法只能适合刚刚学编程的时候使用。
pdyinotia 2016-09-20
  • 打赏
  • 举报
回复
我瞅瞅,还没跨文件尝试过
by_封爱 版主 2016-09-20
  • 打赏
  • 举报
回复
这么费劲? 不需要copy控件 只把Designer.cs跟form.cs除去class部分替换即可啊..
zj_zwl 2016-09-20
  • 打赏
  • 举报
回复
这样很容易出错,用继承就没问题了
xiaha3 2016-09-20
  • 打赏
  • 举报
回复
值得鼓励啊,尤其分享精神

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧