C#反编译后窗体设计器无法打开

这篇具有很好参考价值的文章主要介绍了C#反编译后窗体设计器无法打开。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Winform工程反编译后,设计器会出现无法打开的问题,可能需要修改几点:

  1. 对所有System.Windows.Forms.命名空间里面的控件需要全命名空间的声明,例如base.AutoScaleMode = AutoScaleMode.Font;
    就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    而TextBox textBox1; 也要改成private System.Windows.Forms.TextBox textBox1;
  2. 属性问题:比如一个叫Names的属性被反编译后,可能还原为的set_Names(names),get_Names()方法,逐个替换可能很慢,可采用正则表达式整体替换。
对于set_Xxx(xxx)方法,可替换
set_{[a-z]*}\(
为
\1 = (
对于get_Xxx()方法,可替换
get_{[a-z]*}\(\)
为
\1

ref改为out等,再修复个别被误换的方法。

  1. 委托和回调函数问题:一般会被还原为add_Xxx(MethodsName)方法,需要改为+= MethodsName
  2. 资源问题:需要使用.Net Framework SDK 下的 resgen.exe 工具,反编译嵌入资源文件*.resources为*.resx文件,
    语法为:ResGen.exe .resources .resx,然后将.resx包含入项目,就会自动和同名的窗体文件.cs关联,如果没有关联可采用先排除再添加大法,搞定。
  3. 窗体设计器识别问题:需要把以下代码
    ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));
    替换为
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClassName));
    窗体设计器才能正常识别。
  4. 未能分析方法“InitializeComponent”。分析器报告以下错误:“Invalid symbol kind: NamedType”。请查看任务列表以了解潜在的错误。
    找到报错的窗口的designer.cs 文件中 InitializeComponent这个方法,其中this.Name=nameof(xxxxxx);这一行,改为:this.Name=“xxxx”;
  5. 部分无法解决的语法错误,可通过其他反编译软件生成后,对比逻辑解决。
  6. 部分无法识别的错误,通过代码清理重新打开,可能解决。

最后,推荐使用ILSpy,以上部分问题会在生成时解决。

以上部分转载于此网址:https://www.cnblogs.com/verygis/archive/2008/12/02/1346072.html文章来源地址https://www.toymoban.com/news/detail-488172.html

到了这里,关于C#反编译后窗体设计器无法打开的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Winform中实现窗体控件适配(自适应窗体)布局_通过C#代码方式

    即:未启用控件缩放效果代码时,控件内容都是固定在窗体界面的指定位置,不会跟随窗体的拉伸,放大而进行适配,如下图所示: 即:启用控件缩放效果代码时,控件内容会跟随窗体的拉伸,放大而进行适配,如下图所示: 实现思路是: ①在窗体初始化时先获取窗体的宽

    2023年04月17日
    浏览(47)
  • C# Winform 多进程窗体间传值->SendMessage()

    在 C# 的 Windows Forms 中,使用 Windows API 的 SendMessage 方法可以实现窗口间的消息通传递,当然也可以在不同的进程之间发送消息。接下来,我将为您提供一个基本的示例,演示如何使用 SendMessage 以及如何重写 WndProc 方法来接收并处理消息。 首先,你需要添加对Windows API的引用:

    2024年02月14日
    浏览(43)
  • C# winform usercontrol控件跟随主窗体实现自动大小

    usercontrol控件跟随主窗体实现自动大小 今天是跟着哗哩哗哩大学学习C的第N天,但是是学习usercontrol的第一天。 第一天遇到的问题就是如何将usercontrol的大小跟随主窗体的一起变大变小。视频中教得很详细,首先是将usercontrol控件实例化,接着就是设置usercontrol的dock属性为fil

    2024年02月12日
    浏览(48)
  • C#winform可执行程序.exe在哪个文件夹或同一个winform怎么打开两个同样的窗体

      本人c#小白,整理最简单的内容,希望帮到你,如有错误,敬请指正!

    2024年04月27日
    浏览(54)
  • C#在winForm窗体中添加一个可以自由拖动的控件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一、实现步骤 1.创建一个新的Windows窗体项目 2.添加控件如图 3.代码部分 总结 textBox1=鼠标在需要拖动的控件中的坐标 X 值 textBox2=鼠标在需要拖动的控件中的坐标 Y 值 textBox3=需要

    2024年01月19日
    浏览(44)
  • C# winform窗体UI美化后实现最大化、最小化、还原、关闭、窗体移动等等-2023/1/11

    在做winform窗体UI美化时,一般都需要将窗体的FormBorderStyle属性设为None,之后窗体就会没有最上面的标题栏,然后按照UI进行界面的设计。美化的代价就是窗体本来标题栏的相关操作,例如双击自动最大化,再次双击又恢复正常大小,以及上窗体关闭、最小化等功能就都需要自

    2024年02月08日
    浏览(55)
  • C#实例:多功能Windows窗体应用程序Helloworld_WinForm

    有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm 使用常用C#Windows窗体控件 实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 1、创建窗体Form 项目创建时会默

    2024年02月04日
    浏览(59)
  • C#:如何用VS开启人生中第一个Windows窗体应用程序(Winform)?

    摘要:Windows窗体应用程序(Winform,下文以此指代)既能有效、直观地设计Windows窗体界面,又支持内部逻辑的编写。那么,对于C#初学者来说,如何开启第一个Winform程序呢?    编程语言:C# 编程环境:Visual Studio 2019 目录 步骤 每篇寄语         1、点击桌面Visual Studio 2019图

    2024年02月09日
    浏览(58)
  • C#桌面程序(winform)如何一步步集成内置WebApi(owin技术),解耦IIS,并将Api接收信息推给桌面窗体控件展示

    最近工厂有个需求,服务器上部署了一个服务,此服务要把信息推送给现场多台工控机上的CS上位机程序。由于涉及到多个软件之间的通信,做架构时,首先排除掉中间表形式,从效率和稳定性上也排除掉了Socket,最后采用了WebApi接口形式来做通信。但是有个问题,上位机程

    2023年04月08日
    浏览(46)
  • C#中简单Winform程序编译(待验证)

    1、文件架构 2、MainWindow.xaml 3、MainWindow.xaml.cs 4、测试程序

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包