Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163

Как правильно передать переменную в событие Paint

20.01.2012, 20:20. Показов 3484. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Объявил глобально переменную:
C#
1
int x = 0;
В таймере x изменяется:

C#
1
2
3
4
private void timer1_Tick(object sender, EventArgs e)
        {
            x = DateTime.Now.Millisecond;
         }
Пытаюсь вывести на форму:
C#
1
2
3
4
5
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawString(x, fnt, Brushes.Green, PointF.Empty);
            Invalidate();
        }
Выводит "0". Т.е. то, что я объявил в начале.
Как выводить на форму обновленное состояние переменной x?
Еще пробовал не через Paint, а через Graphics.FromHwnd внутри события таймера, но там не происходит перерисовки и получается каша из цифр, которые отображаются друг поверх друга.
Помогите пожалуйста разобраться.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2012, 20:20
Ответы с готовыми решениями:

Передать переменную в событие
Помогите с примером C#. Нужно передать geting_path в событие, что бы отобразилось в label2 Извиняюсь за банальность вопроса... (( ...

событие Paint
Помогите пожалуйста через событие Paint нарисовать вот такой рисунок. Желательно было если каждая фигура рисовалась отдельным Графикс....

Как передать ссылку на переменную?
При создании объекта класса, в него передается переменная int, значение которого присваивается переменной i класса A. Как присвоить не...

8
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.01.2012, 09:29
А почему бы ее из обработчика таймера и не вывести на форму?

C#
1
2
3
4
private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.Millisecond.ToString();
         }
0
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
21.01.2012, 13:01  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
А почему бы ее из обработчика таймера и не вывести на форму?

C#
1
2
3
4
private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.Millisecond.ToString();
         }
ну в лэйбл мне не удобно. у меня очень маленькая форма без бордера и таскаю ее мышью. ну только, если вы мне подскажете как таскать форму за любой контрол...
0
 Аватар для ibmpc
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
21.01.2012, 13:06
Цитата Сообщение от Shue Посмотреть сообщение
Выводит "0". Т.е. то, что я объявил в начале.
даже очень интересно почему так получается... сам не пойму
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.01.2012, 13:33
может таймер не запущен?) можно код посмотреть?
0
24 / 24 / 4
Регистрация: 07.02.2011
Сообщений: 163
21.01.2012, 13:59  [ТС]
Цитата Сообщение от temich-92 Посмотреть сообщение
может таймер не запущен?) можно код посмотреть?
параметры таймера задаю и запускаю его сразу после InitializeComponent().
да ладно, сделаю через лэйбл, буду таскать форму за кусочек сбоку))
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.01.2012, 14:20
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Start();
        }
 
        Graphics graphics;
 
        private void Form1_Load(object sender, EventArgs e)
        {
            graphics = this.CreateGraphics();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            graphics.DrawString(x.ToString(), new Font("Times New Romaan", 8), new SolidBrush(Color.Blue), new PointF(10, 10));
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            x = DateTime.Now.Millisecond;
            Invalidate();
        }
        int x;
    }
}
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.01.2012, 15:05
temich-92, мне кажется, этот код будет крашиться на старте, т.к. событие Paint возникает перед событием Load, когда graphics еще null.

Могу ошибаться.
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.01.2012, 15:49
Цитата Сообщение от kolorotur Посмотреть сообщение
мне кажется, этот код будет крашиться на старте, т.к. событие Paint возникает перед событием Load, когда graphics еще null.
после того как f5 нажал тоже так подумал, а оно заработало)
а по идее да:
C#
1
timer1.Start();
в
C#
1
Form_Load()
после
C#
1
graphics=this.CreateGraphics();
нужно ставить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2012, 15:49
Помогаю со студенческими работами здесь

Как передать переменную через GET запрос?
Господа, помогите пожалуйста разобраться. Нужно из программы на C# передать переменную в браузерную строку таким образом:...

Как передать ссылку на переменную в другое приложение
допустим есть приложение в которое из c# нужно передать ссылку на string(ancii) в приложение на c++, как это можно сделать? параметры...

Как передать ссылку на переменную в конструктор класса?
Нужно в класс передать ссылку на переменные f1 и f2, как бы привязать их к переменным flag_1,flag_2 класса myClass. Вот код который по...

Как передать переменную (не её значение) в функцию внутри класса
Здравствуйте, все!) Речь про скрипт для игры. В скрипте есть набор систем, схожих между собой. Т.е. у каждой системы есть две...

Как передать неявно типизированную переменную в метод другого класса?
Приветствую тебя читатель. Например: У меня есть класс в котором я хочу написать несколько LINQ запросов, а при помощи другого...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru