Как изменить имя кнопки windows forms

Как переименовать кнопку C# Решение и ответ на вопрос 1441427

Forni

0 / 0 / 0

Регистрация: 28.04.2015

Сообщений: 18

1

Как переименовать кнопку

09.05.2015, 09:51. Показов 8461. Ответов 8

Метки нет (Все метки)


Есть два кода, тут особо ничего не происходит:

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
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;
using obj = System.Object;
using ran = System.Random;
using conv = System.Convert;
 
 
namespace Test5ky
{
 
 
 
    public partial class Form1 : Form
    {
 
 
        int[] pyat = new int[9];
        
        
        public Form1()   
        {
            Random rand = new Random();
            for (int i = 0; i < 9; i++)
                pyat[i] = 0;
            for (int i = 0; i < 9; i++)
            {
                pyat[i] = rand.Next(1,9);
                for (int j = 0; j < i; j++)
                {
                    if (pyat[i] == pyat[j])
                        pyat[i]++;
                }
 
            }
 
         
            InitializeComponent();
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            
        }
    }
}

А тут я пытаюсь переименовать одну из кнопок:

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
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;
using obj = System.Object;
using ran = System.Random;
using conv = System.Convert;
 
 
namespace Test5ky
{
 
 
 
    public partial class Form1 : Form
    {
 
 
        int[] pyat = new int[9];
        
        
        public Form1()   
        {
            Random rand = new Random();
            for (int i = 0; i < 9; i++)
                pyat[i] = 0;
            for (int i = 0; i < 9; i++)
            {
                pyat[i] = rand.Next(1,9);
                for (int j = 0; j < i; j++)
                {
                    if (pyat[i] == pyat[j])
                        pyat[i]++;
                }
 
            }
 
            button1.Text = Convert.ToString(pyat[1]);
            InitializeComponent();
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            
        }
    }
}

Т.е. вся разница в «button1.Text = Convert.ToString(pyat[1]);», но в первом случае программа запускается, а во втром вылетает, подскажете, в чем проблема?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Serx

63 / 69 / 22

Регистрация: 28.04.2015

Сообщений: 194

Записей в блоге: 1

09.05.2015, 10:11

2

C#
1
2
3
4
private void button6_Click(object sender, EventArgs e)
        {
            (sender as Button).Text = "Текст кнопки измениться на этот текст при нажатии на кнопку";
        }

Добавлено через 5 минут
А еще можно поставить InitializeComponent(); перед «button1.Text = Convert.ToString(pyat[1]);», поскольку поле InitializeComponent(); загружает компоненты формы, такие как кнопка



1



0 / 0 / 0

Регистрация: 28.04.2015

Сообщений: 18

09.05.2015, 10:12

 [ТС]

3

Нет-нет, это понятно. Мне нужно расставлять значения текста на кнопках при начале программы. До любых нажатий.

А еще можно поставить InitializeComponent(); перед «button1.Text = Convert.ToString(pyat[1]);», поскольку поле InitializeComponent(); загружает компоненты формы, такие как кнопка

А вот это помогло, затупил я, спасибки)



0



Serx

63 / 69 / 22

Регистрация: 28.04.2015

Сообщений: 194

Записей в блоге: 1

09.05.2015, 10:14

4

InitializeComponent(); ставь в самое начало конструктора Form1()
примерно это будет выглядеть вот так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public Form1()   
        {
            InitializeComponent();
            Random rand = new Random();
            for (int i = 0; i < 9; i++)
                pyat[i] = 0;
            for (int i = 0; i < 9; i++)
            {
                pyat[i] = rand.Next(1,9);
                for (int j = 0; j < i; j++)
                {
                    if (pyat[i] == pyat[j])
                        pyat[i]++;
                }
 
            }
 
            button1.Text = Convert.ToString(pyat[1]);
            
        }



0



6187 / 2439 / 717

Регистрация: 11.04.2015

Сообщений: 3,948

Записей в блоге: 43

09.05.2015, 10:14

5

Forni, ты обращаешься к кнопке до её создания. Попробуй обратиться к ней после вызова InitializeComponent



0



lokilo

115 / 116 / 52

Регистрация: 19.12.2014

Сообщений: 612

09.05.2015, 10:21

6

Forni, я даже и не знаю где вы находите такие коды, и кто так вообще делает? помещать в конструктор формы простое переименование кнопки

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
public Form1()
        {
            InitializeComponent();
        }
 
        int[] pyat = new int[9];
 
        private void Form1_Load(obj sender, EventArgs e)
        {
            ran rand = new ran();
            for (int i = 0; i < 9; i++)
                pyat[i] = 0;
            for (int i = 0; i < 9; i++)
            {
                pyat[i] = rand.Next(1, 9);
                for (int j = 0; j < i; j++)
                {
                    if (pyat[i] == pyat[j])
                        pyat[i]++;
                }
 
            }
            button1.Text = conv.ToString(pyat[1]);
             
        }



0



63 / 69 / 22

Регистрация: 28.04.2015

Сообщений: 194

Записей в блоге: 1

09.05.2015, 10:24

7

Цитата
Сообщение от lokilo
Посмотреть сообщение

я даже и не знаю где вы находите такие коды, и кто так вообще делает? помещать в конструктор формы простое переименование кнопки

Помню я так же делал, когда начинал изучение программирования все это уходит со временем)



0



0 / 0 / 0

Регистрация: 28.04.2015

Сообщений: 18

09.05.2015, 10:28

 [ТС]

8

Верно, верно. Это все полностью моя писанина. Больше ошибаюсь, быстрей вникаю. Видимо, пока только так.)



0



63 / 69 / 22

Регистрация: 28.04.2015

Сообщений: 194

Записей в блоге: 1

09.05.2015, 10:35

9

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

Добавлено через 6 минут
ну или в событие формЛоад



0



Im starting to learn c# and Im trying to make a simple app that when I press a button the button’s name changes to «Clicked» but I cant make it change the name. This is what I did:

    private void Button1_Click(object sender, EventArgs e)
    {
        button1.Text= "Clicked";
    }

asked Apr 29, 2020 at 8:25

yair's user avatar

3

Button1_Click event is not assigned to button1 control, select button then navigate to properties then select events then select Button1_Click at click event then button1 text will change on click.

answered Apr 29, 2020 at 10:50

Rajanikant Hawaldar's user avatar

private void Form1_Load(object sender, EventArgs e)
{
    button1.Text= "Clicked";
}

It works that way

answered Apr 29, 2020 at 16:14

yair's user avatar

yairyair

154 bronze badges

The Text property is used to set the text caption displayed in the Button control. It seems you don’t get the event handler triggered at all. Just see a breakpoint and see how it is working under the debugger.

But if you need to change the name of object pointer (button name) you can’t really do that after declaring it. You have to set a new object reference instead:

Button newButtonName = button1;

answered Apr 29, 2020 at 9:26

Eugene Astafiev's user avatar

Eugene AstafievEugene Astafiev

42.2k3 gold badges21 silver badges40 bronze badges

Im starting to learn c# and Im trying to make a simple app that when I press a button the button’s name changes to «Clicked» but I cant make it change the name. This is what I did:

    private void Button1_Click(object sender, EventArgs e)
    {
        button1.Text= "Clicked";
    }

asked Apr 29, 2020 at 8:25

yair's user avatar

3

Button1_Click event is not assigned to button1 control, select button then navigate to properties then select events then select Button1_Click at click event then button1 text will change on click.

answered Apr 29, 2020 at 10:50

Rajanikant Hawaldar's user avatar

private void Form1_Load(object sender, EventArgs e)
{
    button1.Text= "Clicked";
}

It works that way

answered Apr 29, 2020 at 16:14

yair's user avatar

yairyair

154 bronze badges

The Text property is used to set the text caption displayed in the Button control. It seems you don’t get the event handler triggered at all. Just see a breakpoint and see how it is working under the debugger.

But if you need to change the name of object pointer (button name) you can’t really do that after declaring it. You have to set a new object reference instead:

Button newButtonName = button1;

answered Apr 29, 2020 at 9:26

Eugene Astafiev's user avatar

Eugene AstafievEugene Astafiev

42.2k3 gold badges21 silver badges40 bronze badges

Я начинаю изучать c # и пытаюсь создать простое приложение, которое, когда я нажимаю кнопку, меняет название кнопки на «Нажатие», но я не могу заставить его изменить имя. Вот что я сделал:

    private void Button1_Click(object sender, EventArgs e)
    {
        button1.Text= "Clicked";
    }

3 ответа

Событие Button1_Click не назначено элементу управления button1, выберите кнопку, затем перейдите к свойствам, затем выберите события, затем выберите Button1_Click для события click, после чего текст button1 изменится при нажатии.


0

Rajanikant Hawaldar
29 Апр 2020 в 10:50

Свойство Text используется для установки заголовка текста, отображаемого в элементе управления Button. Кажется, вы вообще не запускаете обработчик событий. Просто посмотрите точку останова и посмотрите, как она работает под отладчиком.

Но если вам нужно изменить имя указателя объекта (имя кнопки), вы не сможете сделать это после объявления этого. Вместо этого вы должны установить новую ссылку на объект:

Button newButtonName = button1;


-1

Eugene Astafiev
29 Апр 2020 в 09:26

private void Form1_Load(object sender, EventArgs e)
{
    button1.Text= "Clicked";
}

Это работает так


0

yair
29 Апр 2020 в 16:14

Как можно изменить названия кнопок в MessageBox в C#?

VladD's user avatar

VladD

205k27 золотых знаков284 серебряных знака515 бронзовых знаков

задан 20 мая 2012 в 8:13

Павел Воевода's user avatar

Павел ВоеводаПавел Воевода

1854 золотых знака9 серебряных знаков24 бронзовых знака

Никак. Но можно создать форму нужных размеров, повесить там кнопки, информацию (label), и открывать её как MessageBox по виду, единственное лишний код будет, MessageBox для того и придуман что бы одной строчкой её показать и что-то так написать.

Открыть форму можно так:

Form form = new Form1();
form.ShowDialog();

На это форме помещаешь кнопку и обработчик.

Закрыть форму:

form.Close();

BlackWitcher's user avatar

ответ дан 20 мая 2012 в 9:40

johniek_comp's user avatar

johniek_compjohniek_comp

2,5094 золотых знака25 серебряных знаков45 бронзовых знаков

Не соглашусь с ответами Василия и johniek_comp, возможность изменить тексты кнопок MessageBox есть. Совсем недавно был подобный вопрос (Как изменить тип MessageBox?).

В случае с кнопками реализация почти ничем не отличается — нужно поставить hook и отлавливать момент создания окна MessageBox и его внутренних контролов.

На CodeProject есть готовый пример по изменению текстов кнопок MessageBox на C#: Localizing System MessageBox

Дух сообщества's user avatar

ответ дан 21 мая 2012 в 7:19

Pavel Azanov's user avatar

3

Класс MessageBox является оберткой над вызовом функции Windows API MessageBox и как таковой не позволяет менять названия кнопок. Вам потребуется создать свой собственный диалог и уже в него добавить необходимые кнопки.

ответ дан 20 мая 2012 в 8:32

stanislav's user avatar

stanislavstanislav

34.1k25 золотых знаков95 серебряных знаков212 бронзовых знаков

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

Затем вы можете подтвердить, что элемент управления по-прежнему использует это событие:

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

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

Обратите внимание, что имя метода может быть любым, что угодно, нет строгого правила, в котором говорится, что это должно быть controlName_eventName(object sender, EvenArgs e). Например, если у вас есть несколько элементов управления, которые совместно используют обработчик событий, вам не нужно решать, какой элемент управления получит имя в имени метода. Вы можете дать ему общее имя, например saveFormChanges(object sender, EvenArgs e) и по-прежнему назначать его как обработчик для этого события.

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Как изменить иконку файла в windows 10 txt
  • Как изменить имя пользователя на компе windows 10
  • Как изменить имя каталога пользователя в windows 10
  • Как изменить имя пользователя на windows 11 при входе в систему
  • Как изменить иконку типа файла в windows 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии