c# winfrom 删除动态生成的二维码控件

删除控件时,发现并不能完全删除所有二维码,原因是每遍历删除一次,整个Control 会发生变化,没有遍历删除完所有二维码

foreach (Control ctrl in this.Controls)
            {
                if (ctrl is BarCodeControl)
                {
                    BarCodeControl bar = (BarCodeControl)ctrl;
                   this.Controls.Remove(bar);
                }
            }

解决办法

       ArrayList ALx = new ArrayList();
            ArrayList ALy = new ArrayList();
            //int index = this.Controls.GetChildIndex((Control)BarCodeControl);
            foreach (Control ctrl in this.Controls)
            {
                if (ctrl is BarCodeControl)
                {
                    BarCodeControl bar = (BarCodeControl)ctrl;
                    //遍历到二维码时,记录一下位置
                    ALx.Add(bar.Location.X);
                    ALy.Add(bar.Location.Y);
                       i = i + 1;
                }
            }
            //遍历到二维码的位置再删除
            for (int j = this.Controls.Count - 1; j >= 0; j--)
            {
                if (ALy.Contains(Controls[j].Location.Y) || ALx.Contains(Controls[j].Location.X))
                {
                    this.Controls.RemoveAt(j);
                }
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#写的二维码编码类和二维码解码类,不调用任何控件,方便翻译成任何语言,可在任意平台上运行。 内有说明文档,说明怎样设置和调用,使用非常的方便,编码一个类,解码一个类,不像网上搜索的那些各种复杂不好用,是我把网上搜索的冗长的代码精简提炼出来的。 以下为使用说明: 编码: 命名空间:namespace ewmbm二维码 类名:public class ewmbm二维码编码 可设置变量 1:ewmbm二维码编码.blx类型//编码类型,数字 、字母或者中文(默认 中文) 2:ewmbm二维码编码.bbb版本//数据容量(默认 版本7) 3:ewmbm二维码编码.bjcdj纠错等级//低、中、高、完美(默认 中) 4:ewmbm二维码编码.bfdbs放大倍数//每个数据点宽几个像素(默认 4) 5:ewmbm二维码编码.bmfs编码方式//(默认 UTF8) 准备工作: 将【二维码\Resources】中的所有dat文件,入资源文件 或者: 将代码中三处读取资源文件的地方改成读取文件也可以, 搜索【btemp = (sbyte[])二维码.Properties.Resources.ResourceManager.GetObject(fileName);】即可找到三处读取资源文件的地方 使用函数: using ewmbm二维码; Bitmap btemp = ewmbm二维码.ewmbm二维码编码.drawqr画二维码(string 要编码的文字); //*************************************************** 解码: 命名空间间:namespace ewmjm二维码 类名: public class ewmjm二维码解码 可设置变量 1:ewmjm二维码解码.bmfs编码方式//(默认 UTF8) 使用函数: using ewmjm二维码; ewmjm二维码解码 decoder = new ewmjm二维码解码(); string ttemp = decoder.jm解码(Bitmap 要解码的图片);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值