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

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


-------------------------------------------------------------------------
Нет худа без добра, да и добро без худа - чудо.
...
Рейтинг: 0 / 0
24.01.2005, 21:11
    #32881188
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scroll во время Drag'n'Drop'a...
я тут немного поигрался, вроде кое что получилось, доделай и будет ок
Код: 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
25.01.2005, 11:29
    #32881869
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scroll во время Drag'n'Drop'a...
Лиман Артёмя тут немного поигрался, вроде кое что получилось, доделай и будет ок
Код: 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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Scroll во время Drag'n'Drop'a... / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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