Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Windows Mobile 6.5 , .net cf3.5 и ScrollBar, Установка позиции вертикального скролла  
:(
    Опции темы
Kero
  Дата 7.7.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 10.5.2006
Где: Винница,Украина | | Реал

Репутация: нет
Всего: 1



Доброго времени суток!
Пишу под windows mobile используя compact framework 3.5

Имееться Panel. В эту панель засовываються контролы рядами. После некоторого цикла засовываний появляеться вертикальный скроллБар так как установлено свойство AutoScroll  = true.

Мне необходимо следующее: после того как очередной ряд контролов добавился в панель, сместить вертикальный скролл в самый низ. Я пытался это сделать следующим кодом:
Код

//Импортируем функции с ядрышка
    [DllImport("coredll.dll")]
    public static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw ); 

    [DllImport("coredll.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool GetScrollInfo(IntPtr hwnd, int fnBar, ref SCROLLINFO lpsi);

    public const int SB_VERT = 1;
    public const int SIF_RANGE = 0x1;
    public const int SIF_PAGE = 0x2;
    public const int SIF_POS = 0x4;
    public const int SIF_DISABLENOSCROLL = 0x8;
    public const int SIF_TRACKPOS = 0x10;
    public const int SIF_ALL = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_DISABLENOSCROLL | SIF_TRACKPOS;

    [StructLayout(LayoutKind.Sequential)]
    public struct SCROLLINFO
    {
      public int cbSize;
      public int fMask;
      public int nMin;
      public int nMax;
      public int nPage;
      public int nPos;
      public int nTrackPos;
    }


//В волшебный момент перезаполнения панели пытаемся подвинуть скрольчечег

        SCROLLINFO gamePanelScrolInfo = new SCROLLINFO();
        gamePanelScrolInfo.cbSize = Marshal.SizeOf(gamePanelScrolInfo);
        gamePanelScrolInfo.fMask = SIF_ALL;
        GetScrollInfo(gamePanel.Handle, SB_VERT, ref gamePanelScrolInfo);
        SetScrollPos(gamePanel.Handle, SB_VERT, gamePanelScrolInfo.nMax, true);


Но вышеописаный код двигает только скроллбар, оставляя контент панели тем же. Более того после этой операции при скроллироании стилусом - контент панели укорачиваетсья снизу.

Я полагаю что вышеописанными действиями я изменяю позицию скролла, но не сообщаю системе что скролл подвинут.

Есть мысли как решить проблемму?
PM MAIL ICQ MSN   Вверх
AnarchyMob
Дата 20.8.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.8.2009

Репутация: нет
Всего: нет



Попробуйте послать окну сообщение WM_VSCROLL
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.