Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 0 / 3
Регистрация: 20.07.2010
Сообщений: 124

Передать значение кнопки в форму

23.01.2013, 23:14. Показов 2478. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно передать значение, получаемое посредством клика на кнопке в дочерней форме, что это значение отображалось на основной форме. Ниже приведен код, значение передается, но на форме не рисуется, в чем может быть проблема?

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
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 dochernrrOkno
{
    public partial class Form1 : Form
    {
        
        Form2 f;
        string header = Data.Value;
        public Form1()
        {
            InitializeComponent();
            f = new Form2();
        }
 
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                f.ShowDialog();
            }
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Font hFont = new Font("Arial", 14, FontStyle.Regular );
 
            e.Graphics.DrawString(Data.Value, hFont, Brushes.Green, 10, 10);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Data.Value);
        }
    }
}
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
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 dochernrrOkno
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Data.Value = "1";
            this.Close();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
 
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace dochernrrOkno
{
    static class Data
    {
        public static string Value { get; set; }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2013, 23:14
Ответы с готовыми решениями:

Передать значение в открытую форму
Здравствуйте! Есть 2 формы, из 1й вызываю 2ю. Во 2й выбираю на датагридвъю какое-то значение. Подскажите пожалуйста, можно ли из 2й...

Передать в форму значение из потока
Поток в результате своей работы возвращает строку. Как её передать в главную форму? Добавлено через 19 минут Нашёл. Для...

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

5
 Аватар для Игрок_со_Смерть
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
24.01.2013, 03:38
У тебя задано событии что делать при создании нового элемента, то есть производить перерисовку всех компонентов, согласно заданному условию. Но это событие пока нигде у тебя не вызывается =)

что нибудь типа вот этого
Попробуй кинь на кнопку и проверь что будет
C#
1
Form1.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
0
1 / 0 / 3
Регистрация: 20.07.2010
Сообщений: 124
24.01.2013, 22:34  [ТС]
Цитата Сообщение от Игрок_со_Смерть Посмотреть сообщение
У тебя задано событии что делать при создании нового элемента, то есть производить перерисовку всех компонентов, согласно заданному условию. Но это событие пока нигде у тебя не вызывается =)

что нибудь типа вот этого
Попробуй кинь на кнопку и проверь что будет
C#
1
Form1.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
Нет, что-то не выходит

Добавлено через 2 часа 50 минут
Я изменил форму 1, и теперь в ней отображается значение кнопки, но проблема в том, что значение отображается во всех клетках поля, а хотелось, чтобы оно отображалось в клетке клика мышью

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
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private const int stroki = 3;
        private const int stolbcy = 3;
        private const int shirinaStolbca = 30;
        private const int vysotaStroki = 30;
        private int[,] Pole = new int[stroki + 2, stolbcy + 2];
        int x, y;
        int row, col;
 
        Form2 f;
 
        string header = Data.Value;
        private System.Drawing.Graphics g;
        public Form1()
        {
            InitializeComponent();
            f = new Form2();
            this.ClientSize = new Size(stroki * vysotaStroki + 1, stolbcy * shirinaStolbca + 1);
            g = panel1.CreateGraphics();
        }
        private void newGame()
        {
 
            for (row = 1; row <= stroki; row++)
                for (col = 1; col <= stolbcy; col++)
                    Pole[row, col] = 0;
        }
 
 
        private void showPole(Graphics g)
        {
            for (row = 1; row <= stroki; row++)
                for (col = 1; col <= stolbcy; col++)
                    this.kletka(g, col, row);
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e) {        }
 
        private void Form1_MouseClick(object sender, MouseEventArgs e){        }
 
        private void kletka(Graphics g, int col, int row)
        {
            int x, y;
            
             x = (col - 1) * shirinaStolbca + 1;
             y = (row - 1) * vysotaStroki + 1;
             g.DrawRectangle(Pens.Black, x, y, shirinaStolbca, vysotaStroki);
             
             Font hFont = new Font("Arial", 14, FontStyle.Regular);
             g.DrawString(Data.Value, hFont, Brushes.Green, x, y);    
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            showPole(g);
        }
 
        private void panel1_MouseClick(object sender, MouseEventArgs e)
        {
 
            int strok = (int)(e.Y / vysotaStroki) + 1;
            int stolb = (int)(e.X / shirinaStolbca) + 1;
 
            if (e.Button == MouseButtons.Left)
            {
                f.ShowDialog();
            }
            this.panel1.Invalidate();
        }
    }
}
0
 Аватар для Игрок_со_Смерть
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
25.01.2013, 03:06
Кинь проект посмотрим где у тебя и что отображается=)
0
1 / 0 / 3
Регистрация: 20.07.2010
Сообщений: 124
25.01.2013, 22:05  [ТС]
Цитата Сообщение от Игрок_со_Смерть Посмотреть сообщение
Кинь проект посмотрим где у тебя и что отображается=)
Вот сам набросок
Вложения
Тип файла: rar kletki.rar (90.8 Кб, 6 просмотров)
0
1 / 0 / 3
Регистрация: 20.07.2010
Сообщений: 124
27.01.2013, 16:33  [ТС]
Получилось как-то так, по клику левой кнопкой мыши, в определенном поле появляется значение, выбранное из второй формы
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
public partial class Form1 : Form
    {
        private const int stroki = 3;
        private const int stolbcy = 3;
        private const int shirinaStolbca = 30;
        private const int vysotaStroki = 30;
        private int[,] Pole = new int[stroki + 2, stolbcy + 2];
        List<Data> znak = new List<Data>();
        int row, col;
 
        Form2 f;
 
        private System.Drawing.Graphics g;
 
        public Form1()
        {
            InitializeComponent();
            f = new Form2();
            g = panel1.CreateGraphics();
        }
 
        private void showPole(Graphics g)
        {
            for (row = 1; row <= stroki; row++)
                for (col = 1; col <= stolbcy; col++)
                    this.kletka(g, col, row);
        }
 
        private void kletka(Graphics g, int col, int row)
        {
            int x, y;
 
            x = (col - 1) * shirinaStolbca + 1;
            y = (row - 1) * vysotaStroki + 1;
            g.DrawRectangle(Pens.Black, x, y, shirinaStolbca, vysotaStroki);
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            showPole(g);
        }
 
        private void panel1_MouseClick(object sender, MouseEventArgs e)
        {
            int strok = (int)(e.Y / vysotaStroki) + 1;
            int stolb = (int)(e.X / shirinaStolbca) + 1;
 
            int x = (stolb - 1) * shirinaStolbca + 5,
                y = (strok - 1) * vysotaStroki + 5;
 
            if (e.Button == MouseButtons.Left)
            {
                f.ShowDialog();
                znak.Add(new Data(Data.Value));
                Font hFont = new Font("Arial", 14, FontStyle.Regular);
                g.DrawString(Data.Value.ToString(), hFont, Brushes.Green, x, y);
            }
 
            if (e.Button == MouseButtons.Right)
            {
                znak.RemoveAt(0);
                MessageBox.Show(strok.ToString() + stolb.ToString());
            }
        }
}
Добавлено через 4 часа 2 минуты
Правда теперь возник вопрос, как удалить значение правой клавишей мыши?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2013, 16:33
Помогаю со студенческими работами здесь

Передать значение textBox в другую форму
Есть textBox1(логин), мы туда вводим значение (наш логин), и оно должно передаться в другую форму в label1, т.е label1 Должен остаться с...

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

Как передать значение в другую форму (класс)
Я только начинаю изучать c#, в форме создаю метод и в этом методе переменной значение присваиваю и вот не могу понять как в другую...

Как передать какое-либо значение в другую форму
Помогите пожалуйста уже все перепробовал ни как не получается!!! В первой форме я выбираь текстовый фаил! private void...

Передать форму в функцию
Допустим есть: if (radioButton1.Checked || radioButton2.Checked) { if (radioButton1.Checked) { Gb.Hot = &quot;Gamer1&quot;;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru