首页 > 解决方案 > 访问 FlowLayoutPanels 的控件方法

问题描述

假设我有一个FlowLayoutPanel被调用panel1的 ,里面有control1, 。每个控件都有一个方法或一个存储变量。我如何访问这些?control2control3.doSomething().name

就像是:

panel1.Controls[0].doSomething();
string name = panel1.Controls[0].name;

我的代码:

public partial class ChatItem : UserControl
    {
        public string username, description, mainUser; /// <summary>
        /// mainUser este utilizatorul care foloseste in prezent aplicatia
        /// </summary>
        MySqlConnection basicConnection, chatUpdater, msgSender;

        #region Properties

        [Category("Custom Properties")]
        public string user
        {
            get { return label1.Text; }
            set { label1.Text = username = value; }
        }

        [Category("Custom Properties")]
        public Image profilePicture
        {
            get { return pictureBox1.Image; }
            set { pictureBox1.Image = value; }
        }

        public Image dot
        {
            get { return pictureBox2.Image; }
            set { pictureBox2.Image = value; }
        }

        #endregion

        public void doSomething()
        {
            MessageBox.Show("something");
        }

    }

我想访问.doSomething()description我该怎么做?

标签: c#.netwpf

解决方案


您应该遍历Controls属性,但应该将控件强制转换为您的类型以使用特定于您的类的字段/方法

foreach(var control in panel1.Controls) 
{
   if (control is ChatItem chatItem) // to ensure the casting can be done
   { 
       string description= chatItem.description;
       chatItem.doSomething();
   }
}

推荐阅读