Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Функция для перелистывания страниц на С#


Автор: POGONEZ 20.2.2010, 18:50
Помогите разобраться с перелистыванием страниц,как это организовать.Как сделать так чтобы при нажатии кнопки вперед,подгружался новый файл и открывался для чтения?

Автор: Экскалупатор 20.2.2010, 19:21
POGONEZ, страниц чего? откуда брать? в чем листать?

Цитата(POGONEZ @  20.2.2010,  17:50 Найти цитируемый пост)
Как сделать так чтобы при нажатии кнопки вперед,подгружался новый файл и открывался для чтения? 

в обработчике события для кнопки пиши нужный код и будет тебе счастье...

Автор: POGONEZ 20.2.2010, 19:48
Код

 private void btForward_Click(object sender, EventArgs e)
        {
            FileStream maintext = new FileStream("HTMLPage2.html", FileMode.Open, FileAccess.Read);
        }

А как чтобы дальше открывался "HTMLPage3.html" потом "HTMLPage4.html", и тоже самое назад?

Добавлено через 4 минуты и 41 секунду
Главы книги,которая находится в HTML,точнее каждая ее глава в отдельном HTML,я на форме нарисовал WebBrowser на него выводятся главы в HTML.Как перелистывать главы вперед?

Автор: Pilger 20.2.2010, 19:54
Запоминаешь номер текущей страницы и открываешь нужную тебе страницу с нужным номером. При перелистывании +1 или -1

Автор: POGONEZ 20.2.2010, 20:13
Pilger, можешь привети пример кода про то как надо запоминать номер страницы.

Автор: Экскалупатор 20.2.2010, 20:45
POGONEZ, откуда ты берешь названия страниц? у них у всех названия отличаются только цифрой?

Автор: POGONEZ 20.2.2010, 22:16
Да,только цифрой,но я могу и переименовать по своему

Автор: wester 20.2.2010, 22:55
Код

private void btForward_Click(object sender, EventArgs e)
        {
            FileStream maintext = new FileStream("HTMLPage2.html", FileMode.Open, FileAccess.Read);
        }

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

Код

var count = 0; // номер файла открытого в данный момент
private void btForward_Click(object sender, EventArgs e)
        {
            var fileName = String.Format("HTMLPage{0}.html",count++);
            FileStream maintext = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            count++;//увеличиваем счетчик на единицу
        }

Автор: Экскалупатор 21.2.2010, 00:09
Код

var count = 0; // номер файла открытого в данный момент
private void btForward_Click(object sender, EventArgs e)
        {
            var fileName = String.Format("HTMLPage{0}.html",count++);
            FileStream maintext = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            count++;//увеличиваем счетчик на единицу
        }


получится что ты будешь просматривать страницы через одну. потому что переменная count будет увеличиваться на единицу два раза. последнюю строчку надо убрать.

Добавлено через 2 минуты и 42 секунды
по поводу имен файлов. генерировать их конечно хорошо, но намного лучше указывать папку откуда их брать, делать из файлов что то вроде списка и оттуда брать значения. узким местом будет сортировка файлов в нужном порядке. но в этом случае ты не будешь жестко привязан к имени файлов, которое как ты сам сказал может измениться...

Автор: wester 21.2.2010, 00:17
Экскалупатор
а черт, устал (:
спасибо что поправил.

ну тогда вот такой код

Код

var fileName = String.Format("HTMLPage{0}.html", ++count);
           FileStream maintext = new FileStream(fileName, FileMode.Open, FileAccess.Read);

         

Автор: Экскалупатор 21.2.2010, 00:46
wester, бывает.


POGONEZ, стоило бы уделить внимания архитектуре всего этого действа. у тебя все делается в обработчике кнопки, это не айс. сделай класс, который будет выполнять всю подготовку списка страниц для просмотра, хранить/задавать текущую, возвращать текущую по требованию и пр. будет в дальнейшем проще во всем этом разобраться и найти ошибки(а они, как показывает практика, почти всегда не избежны...).

Автор: diadiavova 21.2.2010, 12:37
А не проще ли всё скомпилить в chm-файл? smile 

Автор: POGONEZ 21.2.2010, 19:22
Спасибо.
Согласен что это не айс и надо делать классс,но пока не могу сообразить как это должно выглядить,для загрузки,хранения и пр.

Что-то не получается,когда я нажимаю кнопку назад он пишет что файл HTMLPage-1 не найден.

Помогите с классом,который будет все обрабатывать.

Автор: wester 21.2.2010, 21:45
POGONEZ
а сам файл то как выбираешь ?

создай отдельный класс с методами для перелистывания и сохранения состояния
в чем проблема то ? не можешь архитектуру продумать ?

Автор: POGONEZ 22.2.2010, 00:36
При запуске формы,открывается файл в WebBrowser-е HTMLPage1.А дальше надо с помощью кнопок назад вперед листать главу,тоесть грузить остальные файлы

Автор: wester 22.2.2010, 00:55
POGONEZ
выше я уже опубликовал код, который может помочь в решении этой задачи

конечно, можно вынести его в отдельный класс, но это дело вкуса)

Автор: Pilger 22.2.2010, 13:03
Цитата(POGONEZ @ 21.2.2010,  19:22)
Что-то не получается,когда я нажимаю кнопку назад он пишет что файл HTMLPage-1 не найден.

Ты похоже забыл сделать проверки следующего типа, например:
Проверка, является ли текущая страница первой, во избежании ошибок со страницами -1 -2 -3. Тут уж как хочешь. Можешь перескакивать на последнюю, можешь блокировать кнопку, можешь еще что либо.
Проверка, является ли файл последним.
Проверка, существует ли файл вообще.
Фантазируй.

Автор: Экскалупатор 22.2.2010, 18:54
Цитата(Pilger @  22.2.2010,  12:03 Найти цитируемый пост)
Фантазируй. 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)