winform动态添加控件显示排列 选中一个分类后,在panel控件中动态添加图片和文字,跟桌面上的图标一样。

winform动态添加控件显示排列 选中一个分类后,在panel控件中动态添加图片和文字,跟桌面上的图标一样。,第1张

首先控件的排序你可以交给控件来做,选一个flowLayoutPanel,控件扔下去就自动排序了。第二你的控件是不是自定义的,如果是自定义的控件,给click参数里面赋上你要显示的属性。将所有控件都动态生成在一个事件里面,通过属性再给外面赋值。

            for (int i = 0 i < 10 i++)

            {

                Button b = new Button()

                this.Controls.Add(b)

                b.Click += b_Click

            }

            void b_Click(object sender, EventArgs e)

            {

                //throw new NotImplementedException()

                Button b = (Button)sender

                MessageBox.Show(b.Text)

            }

给你个简单的例子照着改改就好了。

没有具体显示过,不过你可以试试

你自己定义一个类,使这个类继承LISTVIEW

然后在你写的这个类中写给LISTVIEW添加图片的属性或方法。

回为LISTVIEW的ITEM是OBJCET类型,你试试给它直接添加一个图片类型数据是否可以。

接下来要做的就行,你在用的程序中用LISTVIEW是就去实例你自己定义的这类就行了。

只是个思路行与不行还有待验证,希望对你有帮助。

树节点的图片要通过imageList 里面的图片才能获得,可以是键值,也可以是索引。我给你个例子。

稍微修改下,你就能用。你可以把Button里面代码包装成一个函数,就可以去添加了

控件就是界面的

后台代码如下:

using System

using System.Collections.Generic

using System.ComponentModel

using System.Data

using System.Diagnostics

using System.Drawing

using System.Linq

using System.Text

using System.Threading.Tasks

using System.Windows.Forms

namespace WindowsFormsApplication2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent()

            this.treeView1.ImageList = imagelist

          

        }

        ImageList imagelist = new ImageList()     

        private void button1_Click(object sender, EventArgs e)

        {

            try

            {

                string filename = this.textBox1.Text.Trim()

                string key = this.textBox2.Text.Trim()

                Image im = Image.FromFile(filename)

                imagelist.Images.Add(key,im)

                string name = this.textBox3.Text.Trim()

                TreeNode tn = new TreeNode(name)

                tn.ImageKey = key

                this.treeView1.Nodes.Add(tn)

            }

            catch

            {

}

        }

        private void Form1_Load(object sender, EventArgs e)

        {

}

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11534059.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存