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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Плавный вывод текста (хотя бы побуквенный) C#, Как вывести побуквенно текст в лейбл? 
V
    Опции темы
Santa12
Дата 26.3.2011, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


вечный чечако



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

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



Уважаемые!

Помажите с таким вопросом:
C#
Есть некая ммм... назовем ее - программа. Выводит некоторый текст из файла. Хочется сделать вывод красивым, ибо программа исключительно лично-развлекательная. Хочется плавный вывод. Буква за буквой. В консоль такое вывести не проблема, а вот как можно сделать в лейбл? И возможно ли? Вариант добавления очередной буквы, и обновления лейбла - не кажется удачным. Шарп я только-только начал учить, поэтому вопрос может быть глупым, за что пардону просим )
Как вариант, если других не будет, остановился на варианте с webBrowser и ява-скиптом, выводящим текст побуквенно. Но это не комильфо. Может кто направит в нужном направлении?
Сразу же и еще вопрос: возможно ли использование шрифта, не установленного на компьютере, где выполняется программка? Если да - то как, в общих чертах?
Заранее спасибо за любые подсказки.
PM MAIL WWW ICQ   Вверх
Fitc
Дата 26.3.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Используй Thread.Sleep(..).Если надобно, чтобы интерфейс не зависал, то используй BackgroundWorker
PM MAIL   Вверх
Santa12
Дата 26.3.2011, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


вечный чечако



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

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



Наверное, я плохо сформулировал свои мысли. Проблема не в том, как сделать паузу. Проблема в том, что я не могу в richtextbox, Label, webbrouser - выводить по одному символу. Т.е. или сразу строку, или только последний символ выводится (в зависимости, что вывожу: string или char)...


Код

         for (int i = 0; i < mas.Length; i++)
            {
               richTextBox1.Text = mas[i] +"\n";
            }


В данном случае, это себя не оправдывает.

PM MAIL WWW ICQ   Вверх
Abbath1349
Дата 26.3.2011, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Попробуй использовать таймер. И выводи Label.Text+=mas[i];
PM MAIL   Вверх
Santa12
Дата 26.3.2011, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


вечный чечако



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

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



Цитата(Abbath1349 @  26.3.2011,  21:59 Найти цитируемый пост)
Попробуй использовать таймер. И выводи Label.Text+=mas[i];


Так и делаю. Но думаю я дурак. 

Код

            for (int i = 0; i < mas.Length; i++)
            {
                richTextBox1.Text += mas[i] +"\n";
                label1.Text += mas[i];
                Thread.Sleep(200);
            }


Получаю паузу, а потом все строки (символы) массива, одним махом. Что у меня не так с руками?
PM MAIL WWW ICQ   Вверх
Abbath1349
Дата 27.3.2011, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 250;
        }

        char[] text = "Вывожу текст".ToCharArray();
        int i = 0;

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                label1.Text += text[i];
            }
            catch(IndexOutOfRangeException)
            {
                label1.Text = "";
                i = -1;
            } 
            i++;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
                timer1.Enabled = false;
            else
                timer1.Enabled = true;
        }   
    }


Может и не лучший способ,но работает )))

Это сообщение отредактировал(а) Abbath1349 - 27.3.2011, 05:54
PM MAIL   Вверх
Santa12
Дата 27.3.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


вечный чечако



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

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



Цитата(Abbath1349 @  27.3.2011,  05:53 Найти цитируемый пост)
Может и не лучший способ,но работает )))



Блин... мне жутко стыдно. Особенно стыдно от того, что пытался такой вариант, но компилятор ругался на "+=". И я неправильно разобрался с ошибкой (((( Посыпаю голову пеплом, и от всей души благодарю! К сожалению, не могу поставить плюс - постов не хватает (((
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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