none
Panel и автоматический скролл? RRS feed

  • Вопрос

  • На форме лежит Panel в нем к примеру richtextbox и treeview которые по размеру больше(по высоте) чем сам Panel. У Panel появляется вертикальный скроллбар. Почему,если отскролить Panel куда-либо, например в конец и после того как какой-либо компонент Panel теряет фокус, а другой компонент его получает Panel При этом отскроливается в самый верх?? как от этого избавиться?

     

    #region Код, автоматически созданный конструктором форм Windows
    
    
    
            /// <summary>
    
            /// Обязательный метод для поддержки конструктора - не изменяйте
    
            /// содержимое данного метода при помощи редактора кода.
    
            /// </summary>
    
            private void InitializeComponent()
    
            {
    
                this.panel1 = new System.Windows.Forms.Panel();
    
                this.richTextBox1 = new System.Windows.Forms.RichTextBox();
    
                this.treeView1 = new System.Windows.Forms.TreeView();
    
                this.panel1.SuspendLayout();
    
                this.SuspendLayout();
    
                // 
    
                // panel1
    
                // 
    
                this.panel1.AutoScroll = true;
    
                this.panel1.Controls.Add(this.treeView1);
    
                this.panel1.Controls.Add(this.richTextBox1);
    
                this.panel1.Location = new System.Drawing.Point(112, 12);
    
                this.panel1.Name = "panel1";
    
                this.panel1.Size = new System.Drawing.Size(435, 252);
    
                this.panel1.TabIndex = 0;
    
                // 
    
                // richTextBox1
    
                // 
    
                this.richTextBox1.Location = new System.Drawing.Point(268, -49);
    
                this.richTextBox1.Name = "richTextBox1";
    
                this.richTextBox1.Size = new System.Drawing.Size(100, 397);
    
                this.richTextBox1.TabIndex = 0;
    
                this.richTextBox1.Text = "";
    
                // 
    
                // treeView1
    
                // 
    
                this.treeView1.Location = new System.Drawing.Point(68, -49);
    
                this.treeView1.Name = "treeView1";
    
                this.treeView1.Size = new System.Drawing.Size(121, 334);
    
                this.treeView1.TabIndex = 1;
    
                // 
    
                // Form1
    
                // 
    
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    
                this.ClientSize = new System.Drawing.Size(692, 276);
    
                this.Controls.Add(this.panel1);
    
                this.Name = "Form1";
    
                this.Text = "Form1";
    
                this.panel1.ResumeLayout(false);
    
                this.ResumeLayout(false);
    
    
    
            }
    
    
    
            #endregion
    
    
    
            private System.Windows.Forms.Panel panel1;
    
            private System.Windows.Forms.TreeView treeView1;
    
            private System.Windows.Forms.RichTextBox richTextBox1;
    

     

    22 февраля 2011 г. 14:20

Ответы

  • Например создать свой класс panel, где переопределить метод ScrollToControl:

      public class myPanel : Panel
      {
        protected override Point ScrollToControl(Control activeControl)
        {
          return this.AutoScrollPosition;
        }
      }
    

    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 2 марта 2011 г. 6:42
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 11:10
    24 февраля 2011 г. 8:09

Все ответы

  • Panel При этом отскроливается в самый верх??

    Не в самый верх, а так, чтобы, по возможности, отобразить элемент, получающий фокус, полностью. Если полностью его отобразить не получается, то панель прокручивается до верхей координаты выделяемого элемента (а если он выходит за верхнюю границу панели, то в самый верх — как и в Вашем случае).

    22 февраля 2011 г. 15:37
  • А что с этим делать. Это отключается?
    22 февраля 2011 г. 16:20
  • И если решения нет,то хотя бы скажите какие события происходят до автоскролла, если выполняются.
    22 февраля 2011 г. 20:26
  • Например создать свой класс panel, где переопределить метод ScrollToControl:

      public class myPanel : Panel
      {
        protected override Point ScrollToControl(Control activeControl)
        {
          return this.AutoScrollPosition;
        }
      }
    

    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 2 марта 2011 г. 6:42
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 11:10
    24 февраля 2011 г. 8:09