Bonjour,

Je souhaite récupérer la position de la scrollbar vertical d'une RichTextBox pour la sauver et la replacer ensuite à son ancienne position.

J'ai trouvé un code (ci-dessous) pour récupérer et imposer une position à une scrollbar, mais le problème, c'est que le code utilise l'API Win32 et je dois donc compiler le projet en "unsafe" (et je pense aussi que ça doit pas être multi-platforme).

Est-ce qu'il existe une méthode plus "propre" pour faire la même chose en C#.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
  [DllImport("user32")]
        public static extern int SendMessage(HWND hwnd, int wMsg, int wParam, IntPtr lParam);
        [DllImport("user32")]
        public static extern int PostMessage(HWND hwnd, int wMsg, int wParam, int lParam);
 
        public const int WM_USER = 0x400;
        public const int EM_GETSCROLLPOS = (WM_USER + 221);
        public const int EM_SETSCROLLPOS = (WM_USER + 222);
 
        [StructLayout(LayoutKind.Sequential)]
        public struct POINT
        {
            public int x;
            public int y;
        }
 
        public unsafe POINT GetScrollPos()
        {
            POINT res = new POINT();
            IntPtr ptr = new IntPtr(&res);
            SendMessage(Handle, EM_GETSCROLLPOS, 0, ptr);
            return res;
        }
 
        public unsafe void SetScrollPos(POINT point)
        {
            IntPtr ptr = new IntPtr(&point);
            SendMessage(Handle, EM_SETSCROLLPOS, 0, ptr);
        }
Merci.