найти положение кнопки управления внутри пользовательского элемента управления внутри flowlayoutpanel

У меня есть 20 пользовательских элементов управления в flowlayoutpanel в форме окна.

У каждого пользовательского элемента управления есть кнопка.

Я хочу найти положение каждой кнопки на панели flowlayout. Как я могу найти координаты X и Y кнопок?

Я могу получить доступ к таким кнопкам:

foreach (Control ctrl in this.pnlContainer.Controls.Find("btnPrint",true))
{
    Button c = ctrl as Button;
    if (c != null)
    {
        logger.Info("x: "+c.Location.X + ",y: "+c.Location.Y,c);
    }
}

Однако координаты x и y всегда одинаковы.

Благодарность!


person Prashant    schedule 10.08.2014    source источник


Ответы (1)


если кнопка находится в одном и том же месте во всех UC, то x y будет одинаковым для всех кнопок в UC, и полученное вами местоположение будет относиться к UC, а не к форме.

я думаю ты можешь найти это здесь

C # Получить позицию элемента управления в форме

попробуйте этот код

foreach (Control ctrl in this.flowLayoutPanel1.Controls)
            {
                foreach (Control item in ctrl.Controls.Find("button1", true))
                {
                    Point pointOnForm = new Point(0, 0);
                    Control Btn = item;
                    for (; Btn.Parent != null && Btn.Parent.GetType() != typeof(Form); Btn = Btn.Parent)
                    {
                        pointOnForm.Offset(Btn.Location);
                    }

                    //label2.Text += pointOnForm + ",";
                }
            }
person Max    schedule 10.08.2014
comment
Да, я в курсе. Однако есть ли способ получить его относительно формы? - person Prashant; 10.08.2014
comment
Я обнаружил, что совершаю ошибку. Мне пришлось создать форму внутри проекта, которая мне требовалась для доступа к элементам управления. Спасибо, в любом случае! - person Prashant; 30.12.2014