Положение управления в Windows.Forms.Panel с автопрокруткой - PullRequest
3 голосов
/ 11 июня 2011

Control.Location не учитывает положение ползунка родительского элемента управления панели и возвращает значение, как если бы не было полосы прокрутки. Итак, как получить реальное положение какого-либо элемента управления внутри прокручиваемой панели? Например, здесь я никогда не получал реальное местоположение моей кнопки:

Button button;
        public Form1()
        {
            InitializeComponent();
            panel1.Height = 200;
            panel1.AutoScrollMinSize = new Size(0, 2000);
            button = new Button();
            panel1.Controls.Add(button);
            button.Top = 1500;
            button.Click += new EventHandler(button_Click);
        }

        void button_Click(object sender, EventArgs e)
        {
            MessageBox.Show(button.Location.Y.ToString());
        } 

1 Ответ

2 голосов
/ 11 июня 2011

Это так.Если я помещу панель в панель прокрутки, положение местоположения меняется при прокрутке:

Private Sub Panel1_Scroll(ByVal sender As Object, ByVal e As ScrollEventArgs) Handles Panel1.Scroll
  Me.Text = Panel2.Location.ToString
End Sub

Убедитесь, что у вас нет элемента управления внутри другой панели, которая прокручивается, тогда свойство location нене меняется.

В противном случае посмотрите на функции PointToScreen и PointToClient или настройте свои значения в соответствии со значением AutoScrollPosition родительского элемента прокрутки.

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