首页 > 解决方案 > 单击事件未在 Windows 窗体用户控件上注册

问题描述

我想创建一个 C# Windows 窗体应用程序,其中有一个流布局面板,其中填充了用户控件元素。每次单击元素时,某些标签必须显示其属性。但是,单击事件未注册。我在 show_preview() 方法上添加了一些断点,它从不调用该方法。Load 事件正在调用 show_preview 但我想根据单击的用户控件更改标签。

这是表格:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            load_plots();
        }
            private void load_plots()
            {
            ArrayList items = new ArrayList();
            for (int i = 0;i<100;i++)
            {
                PlotItem plot = new PlotItem();
                plot.Place = "Ilion";
                plot.Price = i * 1000;
                plot.Space = i * 10;
                plot.Title = "Plot No." + i;
                plot.Width = flowLayoutPanel1.Width - 30;
                plot.Click += new EventHandler(this.show_preview);
                items.Add(plot);
                flowLayoutPanel1.Controls.Add(plot);
            }
        }

        private void show_preview(object sender, EventArgs e)
        {
            PlotItem clicked = sender as PlotItem;
            plot_title.Text = "Hello";
            plot_size.Text = clicked.Space.ToString();
            plot_value.Text = clicked.Price.ToString();
        }  

这是情节项目:

public partial class PlotItem : UserControl
    {
        public PlotItem()
        {
            InitializeComponent();
        }

        #region Properties

        [Category("Plot Object")]
        private String _place;
        public String Place
        {
            get { return _place; }
            set { _place = value; }
        }

        [Category("Plot Object")]
        private double _price;
        public double Price
        {
            get { return _price; }
            set { _price = value; label_price.Text = value.ToString() + "€&quot;; }
        }

        [Category("Plot Object")]
        private String _use;
        public String Use
        {
            get { return _use; }
            set { _use = value; }
        }


        [Category("Plot Object")]
        private double _space;
        public double Space
        {
            get { return _space; }
            set { _space = value; label_size.Text = value.ToString() + "m2"; }

        }

        [Category("Plot Object")]
        private String _title;
        public String Title
        {
            get { return _title; }
            set { _title = value; label_title.Text = value; }
        }

        [Category("Plot Object")]
        private Image _icon;
        public Image Icon
        {
            get { return _icon; }
            set { _icon = value; plot_preview.Image = value; }
        }
        #endregion



        private void panel1_MouseEnter(object sender, EventArgs e)
        {
            this.BackColor = Color.Silver;
        }

        private void panel1_MouseLeave(object sender, EventArgs e)
        {
            this.BackColor = System.Drawing.SystemColors.Control;
        }

谢谢你的时间。

标签: c#winformswindows-forms-designer

解决方案


推荐阅读