C# WPF 如何实现控件数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF 如何实现控件数组?相关的知识,希望对你有一定的参考价值。

我想用 C# 做一个图片浏览器,图片一开始是以 5×5 的矩阵摆放的,全部用 Image 控件放在主窗体里,然后当鼠标点击到任意一张图片时,其他图片变为不可见的同时,这张图片放大到全屏。如果用 25 个单独的 Image 控件到时候写代码不好写,有没有一种用控件数组的方法实现呢?也就是将这 25 个 Image 控件合成为一个数组,到时候响应事件时只需要区分数组的下标就可以实现相应的动作。

picturebox[] pixArray = new picturebox[25]

           for (int i = 0; i < 25; i++)
           
               pixArray[i] = new picturebox();
               pixArray[i].Tag = i;    
               ....          
           
直接定义一个 Image 控件类型的数组,通过动态添加或者静态提前写好的方式,将25个控件对象放入数组中,到时候直接通过数组下标来控制就可以了,加入数组时,在PictureBox.Tag中保存数组下标,这样在事件响应的时候就能区分是那个下标的控件被点击了.

补充:C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

参考技术A List<UIElement> list;

参考技术B 你这还是vb的思维,正确的做法应该是定义ObservableCollection<image>,然后绑定到界面的listbox,还需要定义ItemTemplate和ItemContainerStyle。 参考技术C 用数组只能在代码里去布局,这样很麻烦的。
建议你做一个自定义控件
用一个5*5的Grid,然后初始化此控件时,在每个格子里加载一个image。
然后给这个自定义控件加个SetIamge 和 GetImage 的属性即可。

还有,WPF不需要你去定义图片的数组,ImageList,这个类是有的。
参考技术D PictureBox[] pixArray = new PictureBox[25];
for (int i = 0; i < 25; i++)

pixArray[i] = new PictureBox();
pixArray[i].Tag = i;
....

你直接定义一个 Image 控件类型的数组,通过动态添加或者静态提前写好的方式,将25个控件对象放入数组中,到时候你直接通过数组下标来控制就可以了,加入数组时,你在PictureBox.Tag中保存数组下标,这样你在事件响应的时候就能区分是那个下标的控件被点击了.本回答被提问者采纳

C# wpf 想让控件随着窗口大小变化而变化

wpf 想让控件随着窗口大小变化而变化
就像winfrom里面的Dock=Fill 一样的效果
请问前台代码怎样实现呢?

那你可以采用Grid按照比例来布局,然后把控件的宽和高设置成Stretch填充就可以了追问

这个行不通了
请问是那个属性呢? Height 和 Width 属性 不能直接设置 Stretch

追答



追问

这个还是没看懂 那里有 设置了控件跟随改变而改变的属性

参考技术A wpf里面有一个DockPanel,用这个控件。 参考技术B 用expression blend设计wpf前台啊,feihonggang888 说的可行追问

看得不懂 。。

追答

expression blend是wpf前台界面设计工具,是专业wpf的UI界面设计工具,可以直接生成xaml。你使用那个可以实现很多你手写很费力的效果。包括触发器等。

Button1 是不是你想要的效果

追问

不是哦 我想要的是 比如说 tabcontrol 控件随这窗口的改变而改变 宽度和高度一样

追答


应该是这样的吧,Button1填充在第一表格内,还不行可以给我发邮件,275652960@163.com

本回答被提问者采纳

以上是关于C# WPF 如何实现控件数组?的主要内容,如果未能解决你的问题,请参考以下文章

C#中利用WPF如何实现控件的旋转?以控件的中心旋转

C# wpf 实现任意控件拖动

C#中如何实现WPF调用Winform中用户自定义的控件呢?

WPF 如何实现图片原比例缩小

c# winform 如何实现选择另一台电脑上目录下的文件??

C# wpf 将xaml打印成pdf并能实现分页,ps:xaml里面是一个FixedPage的控件,请问该怎么做