Получить доступ к элементу управления отправителя - C # - PullRequest
3 голосов
/ 21 ноября 2011

Как получить доступ к элементу управления отправителя (т. Е. Изменить местоположение и т. Д.)?Я создал несколько графических блоков во время выполнения на панели, чтобы установить функцию щелчка для функции.Я хочу, чтобы пользователь щелкнул по месту расположения картинки.Я также попытался this.activecontrol, но он не работает и дает расположение элемента управления, размещенного в форме.Я использую следующий код:

    void AddPoint(int GraphX, int GraphY,int PointNumber)
    {
        string PointNameVar = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
        string [] PointNameArr = PointNameVar.Split(',');

        PictureBox pb_point = new PictureBox();
        pb_point.Name = "Point"+PointNameArr[PointNumber];

        pb_point.Width = 5;
        pb_point.Height = 5;
        pb_point.BorderStyle = BorderStyle.FixedSingle;
        pb_point.BackColor = Color.DarkBlue;
        pb_point.Left = GraphX; //X
        pb_point.Top = GraphY; //Y
        pb_point.MouseDown += new MouseEventHandler(pb_point_MouseDown);
        pb_point.MouseUp += new MouseEventHandler(pb_point_MouseUp);
        pb_point.MouseMove += new MouseEventHandler(pb_point_MouseMove);
        pb_point.Click += new EventHandler(pb_point_Click);
        panel1.Controls.Add(pb_point);
    }


    void pb_point_Click(object sender, EventArgs e)
    {
        MessageBox.Show(this.ActiveControl.Location.ToString()); //Retrun location of another control.
    }

Функция AddPoint вызывается циклом для создания числа PictureBox, которые дают номера X, Y и Point.В соответствии с кодом создаются картинные ящики, именуемые PointA...PointZ

Ответы [ 2 ]

5 голосов
/ 21 ноября 2011

В обработчике кликов приведите параметр 'sender' к PictureBox и проверьте его местоположение.

void pb_point_Click(object sender, EventArgs e)
{
    var pictureBox = (PictureBox)sender;
    MessageBox.Show(pictureBox.Location.ToString());
}
2 голосов
/ 21 ноября 2011

Sender - это ваша картинка. Просто бросьте это:

void pb_point_Click(object sender, EventArgs e)
{
    var pictureBox = (PictureBox)sender;
    MessageBox.Show(pictureBox.Location.ToString()); //Retrun location of another control.
}
...