powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Scroll во время Drag'n'Drop'a...
3 сообщений из 3, страница 1 из 1
Scroll во время Drag'n'Drop'a...
    #32881123
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этой демо-программке вы можете "схватить" любой из элементов листбокса и унести его на другую позицию. Попробуйте - вам понравится. :)

Проблема: Попробуйте унести элемент 1 на позицию 99.
Как крутить скролл автоматически?


-------------------------------------------------------------------------
Нет худа без добра, да и добро без худа - чудо.
...
Рейтинг: 0 / 0
Scroll во время Drag'n'Drop'a...
    #32881188
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут немного поигрался, вроде кое что получилось, доделай и будет ок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
		[DllImport("user32.dll")]
		static extern int  SendMessageA(IntPtr hwnd , int wMsg  ,
			int  wParam , int lParam ) ;

		const int SB_HORZ = 0;
		const int SB_LINEDOWN = 1;
		const int WM_VSCROLL = 0x115;
private void listBox1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
		{
			.....
				if (selInd > GetVivsibleCount()) 
				{
					SendMessageA(listBox1.Handle,  WM_VSCROLL, SB_LINEDOWN, 0);
				}

			}
			
			
		}

		private int GetVivsibleCount()
		{
			 return listBox1.Height / listBox1.ItemHeight - 2;
		}
...
Рейтинг: 0 / 0
Scroll во время Drag'n'Drop'a...
    #32881869
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артёмя тут немного поигрался, вроде кое что получилось, доделай и будет ок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
		[DllImport("user32.dll")]
		static extern int  SendMessageA(IntPtr hwnd , int wMsg  ,
			int  wParam , int lParam ) ;

		const int SB_HORZ = 0;
		const int SB_LINEDOWN = 1;
		const int WM_VSCROLL = 0x115;
private void listBox1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
		{
			.....
				if (selInd > GetVivsibleCount()) 
				{
					SendMessageA(listBox1.Handle,  WM_VSCROLL, SB_LINEDOWN, 0);
				}

			}
			
			
		}

		private int GetVivsibleCount()
		{
			 return listBox1.Height / listBox1.ItemHeight - 2;
		}




Спасибо. Доделал.

Код: plaintext
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.dll")]
		static extern int  SendMessageA(IntPtr hwnd , int wMsg  ,
			int  wParam , int lParam ) ;

		const int SB_LINEUP = 0;
		const int SB_LINEDOWN = 1;
		const int WM_VSCROLL = 0x115;
private void listBox1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
		{
			.....
				if (selInd > GetVivsibleCount() + listBox1.TopIndex) 
				{
					SendMessageA(listBox1.Handle,  WM_VSCROLL, SB_LINEDOWN, 0);
				}

				if (selInd ==  listBox1.TopIndex &&  listBox1.TopIndex > 0) 
				{
					SendMessageA(listBox1.Handle,  WM_VSCROLL, SB_LINEUP, 0);
				}

			}
			
			
		}

		private int GetVivsibleCount()
		{
			 return listBox1.Height / listBox1.ItemHeight - 2;
		}

...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Scroll во время Drag'n'Drop'a...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]