Scroll na panelu - problem

Odpowiedz Nowy wątek
2011-09-27 12:56
0

Witam

Mam pytanie odnośnie zwykłego windowsowego Panelu. Mając scroll na takim panelu i przesuwając "ciągnąc" za niego w górę jest wszystko ok. Przeciągając go w dół mam wrażenie, że kontrolki się odświeżają (w sensie jakiegoś repaint). Zaznaczę, że są panele do renderowania pdf-ów. Czy jest jakaś różnica czy przeciągamy scrolla w dół czy w górę? Chciałbym żeby to działało w ten sam sposób. Zachowuje się tak jakby kontrolki, które są na dole się za każdym razem przeładowywały (w górę tego niema;/). Proszę o jakieś sugestie...



Pozostało 580 znaków

2011-09-27 18:57
0

Może to: http://stackoverflow.com/ques[...]82/smooth-scrolling-net-forms

Pozostało 580 znaków

2011-09-28 09:08
0

To rozwiązanie nie działa. Próbowałem też czegoś takiego:

public class ScrollPanel : System.Windows.Forms.Panel
{
   private const int WM_HSCROLL = 0x114;
   private const int WM_VSCROLL = 0x115;

   protected override void WndProc (ref Message m)
   {
      if ((m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL) 
          && (((int)m.WParam & 0xFFFF) == 5))
      {
          // Change SB_THUMBTRACK to SB_THUMBPOSITION
         m.WParam = (IntPtr)(((int)m.WParam & ~0xFFFF) 
                    | 4);
      }
      base.WndProc (ref m);
   }
}

ale też nie przynosi oczekiwanego efektu.

Zaznaczę, że przy użyciu PanelControl firmy devexpress nie ma takiego efektu przy przesuwaniu w dół. Tutaj nie za bardzo pasuje mi użycie DevExpress-a. Proszę o dlasze sugestie...



Pozostało 580 znaków

2011-09-28 10:01
0

Kolejne spostrzeżenia. Jeżeli pod panel na który występuje ten problem wstawię panel z DevExpress problemu nie ma.

Zamiast panelu komercyjnego próbowałem utworzyć swój panel:

 public partial class DoubleBufferPanel : Panel
    {
        public DoubleBufferPanel()
        {
            InitializeComponent();

            this.DoubleBuffered = true;

            this.SetStyle(ControlStyles.UserPaint, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            this.UpdateStyles();
        }
    }

ale też niestety nie pomaga. Coś ten windows-owy panel jest "ułomny". Tylko nie wiem w czym tkwi problem...



Swego czasu sporo bawiłem się Formsami i trzeba przyznać że nie są cudem techniki. Patrząc na twój problem myślę, że nie rozwiążesz tego tak po prostu. Może jak byś stworzył swój Panel od podstaw, to by coś wyszło. Myślę, że to znak abyś przerzucił się na WPF :). - Jakub Baran 2011-09-28 19:03

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0