当前位置:编程学习 > C#/ASP.NET >>

winform中你喜欢选中多个控件同时设置图片或背景吗?小心哦!

    在winform中,如果我们要给多个控件设置相同的图片时,静态设置有2种方式,一是选中一个图片,在属性中设置图片,如此往复,一个一个控件去设置;二是选中这些控件,统一设置所有控件的属性。通常为了省事,我们都会选择第二种。如果你喜欢第二种,那么要注意你的exe的体积了!
    我们在窗体上拖4个pictureBox,选中第一个pictureBox,设置属性BackgroundImage,选择项目资源文件中的一个文件abc.jpg(假设我们事先已经添加了该文件到项目资源中),那么窗体的设计文件会自动生成如下代码
    this.pictureBox1.BackgroundImage = global::WindowsApplication1.Properties.Resources.abc;
    同样的方法,我们再设置第二个pictureBox,生成的代码是:    
    this.pictureBox2.BackgroundImage = global::WindowsApplication1.Properties.Resources.abc;
我们再选中剩下的2个pictureBox,也是同样设置它们的BackgroundImage属性,那么生成的代码如下:
    this.pictureBox3.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox3.BackgroundImage")));
    this.pictureBox4.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox4.BackgroundImage")));
    通过代码我们可以看到,设置单一控件的属性,访问的是同一资源Properties.Resources.abc,即使多次使用,也是访问的同一资源。而同时设置多个控件的属性,访问的是不同的资源:pictureBox3.BackgroundImage和pictureBox4.BackgroundImage。而不同资源是会被编译成不同对象的,也就是说,如果使用第二种方式,同一张图片1.jgp被编译成了不同的对象,当然体积更大了。使用第一种方式,图片1.jpg只被编译了成了一个对象,而被多次引用而已,体积当然不受使用次数的限制了。
    所以大家不要偷懒哦!
    还有一点顺便说一下:设置属性BackgroundImage(或类似属性)时,如果你选的不是“项目资源文件”,而是“本地资源”的话,那么与上面的第二种方式一样。
    散分~~~~~~ --------------------编程问答-------------------- 学习沙发 --------------------编程问答-------------------- 更正笔误:后面2处“1.jgp”应为“abc.jpg” --------------------编程问答-------------------- 精神可佳,小细节分享.

顶起来 --------------------编程问答-------------------- 这还真不知道,谢楼主,接分! --------------------编程问答-------------------- 是的,设置窗体图标也是这样,如果用同一资源代码载入则不会,如果设置属性选择某一个本地文件就会增加空间 --------------------编程问答-------------------- 呃,学习,顺便接分~ --------------------编程问答-------------------- 用这么久了还真没发现这个东西有区别
看见楼主心细啊
--------------------编程问答-------------------- 学习,学习!(回复内容太短了!) --------------------编程问答-------------------- 一个一个的设,也麻烦,直接在代码里面添加Pictures。

得自己亲自实践了,再看看。 到底相差多大? --------------------编程问答-------------------- 每天回帖即可获得10分可用分! --------------------编程问答-------------------- 学习了,平时都是用code设置的 --------------------编程问答-------------------- 唉~写程序还真得注意些细节~! --------------------编程问答-------------------- 不错不错~专注细节,好的程序就是从细节累积起来的 --------------------编程问答-------------------- 学海无涯,看来多上下csdn能学到蛮多东西。真是太好 了。

大家都来参与啊。不回的看一看。回的回个帖
--------------------编程问答-------------------- lz好细心,顶了 --------------------编程问答-------------------- 还有这一说 --------------------编程问答-------------------- 来学习 --------------------编程问答-------------------- 这就是细节么 --------------------编程问答-------------------- 多谢,.net有时候不好研究。 --------------------编程问答-------------------- --------------------编程问答-------------------- Lz研究得仔细啊 --------------------编程问答-------------------- 以前一直做B/S  刚找了份了C/S的工作
对于楼主的经验分享很受用
谢谢楼主了
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,