| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3016 人关注过本帖
标题:C#中winform和wpf中创建的控件是一个类还是一个实例对象?
只看楼主 加入收藏
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:10 
C#中winform和wpf中创建的控件是一个类还是一个实例对象?
C#中创建窗口程序添加的控件是建立了一个 控件名的类 还是创建了这种控件的实例啊?看了一些代码,有的是直接控件名+属性就调用了,有的要new一个实例来调用,到底是什么样的啊?实在不明白。另外我在建立多窗口时添加了一个新的窗口,然后建立了一个对象,使用时如果没有没有把这个新窗口关闭,再次调用时又会创建新的窗口,既然这样,为什么建立多窗口时要添加?
程序代码:
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.Show();
        }
比如像这样的代码,实在搞不明白
另外继承窗体是只继承窗体及控件还是和控件事件代码一起继承啊?


[ 本帖最后由 卡巴斯 于 2013-3-28 22:19 编辑 ]
2013-03-28 22:06
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:5 
1 C#中创建窗口程序添加的控件是建立了一个 控件名的类 还是创建了这种控件的实例啊?
创建的是实例

2 看了一些代码,有的是直接控件名+属性就调用了,有的要new一个实例来调用,到底是什么样的啊?
new是肯定有的,如果是在设计器界面上从工具箱里拖过去的控件,new的代码是vs自动添加的,如果是要在程序中动态添加控件,只能自己new咯

3 为什么建立多窗口时要添加?
不明白你问的是啥,多窗口是指怎样的多窗口,添加又是说的要添加什么

4 另外继承窗体是只继承窗体及控件还是和控件事件代码一起继承啊?
继承是继承基类的全部,包括窗体,控件,事件,代码
2013-03-28 23:00
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 2楼 yhlvht
多窗口就是说我要创建一个有多个操作窗口界面的程序,就像windows一样,可以打开好几个窗口,我在书上看说如果要建立多个窗口的程序,需要在解决方案的项目里面添加一个windows窗体,然后如果要调用添加的这个窗体就需要创建一个窗口对象,就是上面的代码
2013-03-28 23:12
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
当然要在解决方案里面添加窗体啦,Form2 frm = new Form2();这个只是创建窗体的实例,如果没有在解决方案中添加Form2窗体,vs自然不知道Form2是什么东西,也创建不出Form2实例.
2013-03-28 23:25
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 4楼 yhlvht
可是为什么我用上面的代码创建窗口时如果之前打开的窗口不关掉的话再次点击它又会创建一个窗口,点击一次按钮就会创建一个,但是只添加了一个窗口啊?按照这样来看,添加的窗口就是一个类了,之前不是说控件这些都是实例吗?
2013-03-28 23:29
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
你在解决方案中添加的实际上是一个窗体类,这个类中记录了窗体的属性啊,方法啊等等,但是这个类在内存中并不存在,因为我们并没有创建他的实例.
当我们使用new Form2的时候,就是在内存中按照这个窗体类中写好的的属性,方法等去实际创造出一个窗体.
如果没有这个类,无论怎么new,也是创造不出来的.
有这个类了,那么,new一次就创建一个,new几次,就创建几个,这时创建出来的就是实例,解决方案中添加的只是类而已

控件当然是实例啊,控件的类是微软给你写好了的,已经放在vs里面了,这跟你使用vs中提供的别的类,例如ArrayList,Console这些是一个意思,你往窗体中拖放控件,vs会自动创建控件的实例,你只需要使用控件的名称,就是你在属性窗口中为控件指定的Name,就可以操作控件了
2013-03-29 00:52
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 6楼 yhlvht
那程序一开始创建的form1也是一个类吗?通过new Form2创建的实例是同一个实例还是不同的?
2013-03-29 18:08
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
创建窗体应用程序解决方案的时候,自动创建的Form1也是一个类啊
每一个new出来的对象,都是单独存在的,它们的内容可能会相同,但决对不是同一个东西,所以它们不是同一个实例
2013-03-29 19:10
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 8楼 yhlvht
那像我上面写的代码,如果创建了多个窗口,要怎么分别对它们进行操作啊?就是通过 new出来的多个窗口,如何分别操作啊?
2013-03-29 22:07
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
对象是通过引用来操作的,Form2 frm = new Form2();这个frm就是Form2的引用,可以操作Form2.
如果这句执行多次,那frm始终只对应最后一个Form2对象,之前的对象就没有引用了,也不能再操作了
如果你想要操作,你需要每个对象都对应一个引用,或是把每一个Form2对象用数组或是集合保存起来
2013-03-29 22:49
快速回复:C#中winform和wpf中创建的控件是一个类还是一个实例对象?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035256 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved