winform中遇到的奇葩问题总结(持续更新)

本人遇到问题对应的winform环境配置

编辑器:Microsoft Visual Studio Community 2019 版本 16.10.2
项目模板类型:Windows窗体应用(.Net Framework)
框架:.Net Framework 4.6.1

遇到的问题

1.从文件->属性->安全 中复制的路径直接粘贴到代码里出错,如下图:
在这里插入图片描述
解决方案:把前面D:删掉再手打一遍就行
原因:应该是复制的时候带到了前面的特殊字符,虽然在形式上看没看到特殊字符,但编码上应该不同。将前面删掉重写一遍就OK

2.“System.ArgumentException”类型的未经处理的异常在 System.Drawing.dll 中发生 参数无效。
在这里插入图片描述
在winform中绘图的时候有时候会遇到这个错误,明明代码调用各方面都没问题但就是报错,而且报错的那行代码也没问题。
解决方案:打开报错详细信息看是哪个变量出问题了,我这里是mypen那个变量。再将代码转到声明mypen变量的地方,将pen.dispose()的方法注释掉就行了
原因:个人猜测是因为类似pen这种变量在dispose之后系统会自动将之前赋值过的相关变量也做相应改动,导致变量出错。所以这种new过之后就不用管,等系统自动回收就好

3 在设置控件跟随鼠标移动时会出现频闪问题,如图:
在这里插入图片描述
图中是想实现lena对应的picturebox可以跟随鼠标移动,但实际效果会出现很严重的频闪,当鼠标松开后图片又回到原来位置。
解决方案:将picturebox中的dock属性设置为none
原因:应该是dock属性的实现涉及到控件位置的设置,导致此时我们用代码再次设置控件位置会和dock属性冲突,造成设置失败

4 改变字体时控件会随字体一起变化
改变字体前改变字体前
改变字体后
在这里插入图片描述
明显可以看到,当字体大小改变后,对应窗体大小也改变了。
解决方案:其实这是因为winform中有个属性是默认与字体挂钩,如图:
在这里插入图片描述
将这里属性改为none就行了,此时不论字体怎么变窗体都不会改变了
原因:我这里出现这个问题原因是拿控件传字体参数了,所以才导致出现这个问题。如果不拿控件传字体相关的参数应该不会遇到这样的问题。

5 “System.DllNotFoundException”类型的未经处理的异常
当在c#中引用c++导出的dll时,出了这个问题,如图:
在这里插入图片描述
当时我看到这个问题检查了好多遍,到处搜解决方案,最后在这位老哥博客中找到了解决方案 原文
我总结下我看到的解决方案:
1 换目标平台 x86改x64,反正来回改
2 检查导出函数及导入函数是否有问题
3 路径名是否有问题
4 导出的dll是否依赖其他dll 这个一定要认真检查,我检查完发现我导出的dll需要依赖其他dll,然后把要依赖的dll和导出的dll放一个目录就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值