MouseClickEvent для UserControl не срабатывает при нажатии на его дочерние элементы - PullRequest
0 голосов
/ 06 мая 2020

Извините за мой запрос, но я только новичок в использовании UserControl:

Почему MouseClickEvent элемента UserControl не наследуется элементами управления (например, метками) внутри него?

Чтобы показать вам, как я создаю экземпляр UserControl внутри flowLayoutPanel:

        studentItemList[] listItem = new studentItemList[dt.Rows.Count];

        for (int i = 0; i < listItem.Length; i++)
        {
            listItem[i] = new studentItemList();
            listItem[0].Anchor = AnchorStyles.Right;
            listItem[i].MouseDoubleClick += StudentPrev;
            listItem[i].StudentID = dt.Rows[i].Field<string>(0);
            listItem[i].StudentName = dt.Rows[i].Field<string>(1) + ", " + dt.Rows[i].Field<string>(2) + " " + dt.Rows[i].Field<string>(3);
            listItem[i].StudentEmail = dt.Rows[i].Field<string>(4);
            listItem[i].StudentStatus = dt.Rows[i].Field<string>(5);

            flowLayoutPanelStudents.Controls.Add(listItem[i]);
        }



studentItemList.cs:

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

    private string _studID, _studName, _studEmail, _status;

    public string StudentID
    {
        get { return _studID; }
        set { _studID = value; studentNo.Text = value; }
    }
    public string StudentName
    {
        get { return _studName; }
        set { _studName = value; studentName.Text = value; }
    }

    private void studentNo_Click(object sender, EventArgs e)
    {

    }




    public string StudentEmail
    {
        get { return _studEmail; }
        set { _studEmail = value; studentEmail.Text = value; }
    }

    public string StudentStatus
    {
        get { return _status; }
        set { _status = value; status.Text = value; }
    }





    private void label1_Click(object sender, EventArgs e)
    {

    }
}

Label.Autosize установлен на true, а DockStyles установлен на Left.

Хотя, MouseEvent get срабатывает при нажатии на родительскую Panel для UserControl.

Что за причина этого?

1 Ответ

0 голосов
/ 06 мая 2020

Вам необходимо подключить все элементы управления, которые могут получать событие щелчка.

Если все элементы управления в пользовательском элементе управления yout добавлены до создания экземпляра элемента управления (например, во время разработки), вы можете добавить обработчики событий в конструктор пользовательского элемента управления. Если пользовательский элемент управления имеет элементы управления, добавленные / удаленные во время выполнения, вам необходимо подключить события ControlAdded и ControlRemoved к событиям подключения / отключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...