3 / 3 / 0
Регистрация: 03.01.2013
Сообщений: 38
1

Бегущая строка в TextBox

11.10.2013, 09:58. Показов 3453. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,
Знаю, что тема избитая, гуглил, но остались некоторые вопросы.
В общем задача обычная, пока упрощённый вариант. 2 TextBoxа(ввод бегущей строки и сама строка readonly) 4 кнопки (сменить текст/пауза/старт/стоп)

Грубо говоря пока алгоритм такой:
Заполняем переменную из TextBox
Смотрим ширину TextBoxReadonly
Исходя из того, что символ занимает в ширину примерно 10 пикселей, а пробел 5. Смотрим всю ли ширину занимает текст. Если нет дополняем пробелами до конца.
Запускаем цикл пока (!stop)
Цикл запускает метод который принимает число(счётчик который когда доходит до длины строки обнуляется)
По счётчику удаляются первые символы и копируются в конец строки
Ждём секунду

Примерно так, но возникла проблема. При запуске цикла приложение виснет наглухо.
Цикл имеет примерно такой вид:
C#
1
2
3
4
5
While(!stop)
{
 //Метод
 Thread.sleep(1000);
}
Ну собственно и вопрос: Как запустить цикл в виде сделал действие, подождал повторил? Как правильно организовать задержку?
0
11.10.2013, 09:58
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2013, 09:58
Ответы с готовыми решениями:

Бегущая строка
Составить программу, которая выводит на экран бегущую строку.

Бегущая строка с использованием регулярных выражений
Необходимо доработать программу с использованием регулярных выражений. using System; using System.Collections.Generic; using...

Бегущая строка
Здравствуйте Покажите пожалуйста пример кода как написать бегущую строку. Примерчик можете показать с помощью банера или просто...

2
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
11.10.2013, 11:43 2
C#
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace System.Windows.Forms
{
    public enum Direction
    {
        Left,
        Right
    }
 
    public class Marquee : TextBox
    {
        Timer timer;
        string text;
        int position;
        bool disposed;
        bool itsMe;
 
        public Marquee()
        {
            this.timer = new Timer();
            this.timer.Interval = 75;
            this.position = 0;
            this.timer.Tick += OnTick;
            this.timer.Start();
            this.disposed = false;
            this.itsMe = false;
        }
 
        protected override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    this.timer.Tick -= OnTick;
                    this.timer.Dispose();
                }
                base.Dispose(disposing);
                disposed = true;
            }
        }
 
        ~Marquee()
        {
            Dispose(false);
        }
 
        protected override void OnTextChanged(EventArgs e)
        {
            base.OnTextChanged(e);
            if (!this.itsMe)
            {
                this.text = this.Text;
            }
        }
 
        protected virtual void OnTick(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.text))
            {
                PaintEventArgs paintArgs = new PaintEventArgs(this.CreateGraphics(), this.Bounds);
                OnPaint(paintArgs);
            }
        }
        
        protected override void OnLostFocus(EventArgs e)
        {
            this.timer.Start();
            this.position = 0;
            this.itsMe = true;
            this.Clear();
            this.itsMe = false;
        }
 
        protected override void OnEnter(EventArgs e)
        {
            this.timer.Stop();
            base.Text = this.text;
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            if (!this.Focused && !string.IsNullOrEmpty(this.text))
            {
                Graphics g = e.Graphics;
                g.Clear(this.BackColor);
                SizeF size = g.MeasureString(this.text, this.Font);
                g.DrawString(this.text, this.Font, Brushes.Black, (float)position, (float)((this.ClientRectangle.Height - (int)size.Height) >> 1));
                if (this.Direction == Direction.Right)
                {
                    position++;
                    if (position == this.ClientRectangle.Width)
                        position = -(int)size.Width;
                }
                else
                {
                    position--;
                    if (-position == (int)size.Width)
                        position = this.ClientRectangle.Width;
                }
            }
            else 
                base.OnPaint(e);
        }
 
        public virtual Direction Direction { get; set; }
 
        public virtual int Interval
        {
            get
            {
                return this.timer.Interval;
            }
            set
            {
                this.timer.Interval = value;
            }
        }
    }
}
1
3 / 3 / 0
Регистрация: 03.01.2013
Сообщений: 38
11.10.2013, 13:04  [ТС] 3
Петррр, Благодарю, дошло... Надо было юзать вместо While, методы timera =)
0
11.10.2013, 13:04
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2013, 13:04
Помогаю со студенческими работами здесь

Бегущая строка
Здравствуйте Помогите пожалуйста, мне нужен пример чтоб осмыслить как делать бегущую строку, типа баннер готовый или такой вариант, как...

командная строка и textbox, C#
Можно ли считывать результат выполнения команд командной строки (простите за тавтологию) и записывать их, к примеру, в textbox и обновлять...

Бегущая строка в TextBox
Доброго времени суток =) Есть такой вопросик: как можно организовать бегущую строку в текстбоксе(или же в другом компоненте, через...

Бегущая строка в Label или TextBox из файла txt?
Как можно реализовать бегущую строку в LabelText или TextBox из многострочного файла txt?

Апплет "бегущая строка", найти ошибку, строка не останавливается и бежит по второму кругу
Заранее извиняюсь если не туда написал, суть вопроса: у меня стоит задача написать апплет, в котором строка из верхнего угла бежит в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru