С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21

Почему в обработчике кнопки недоступна переменная из Form_Load??

16.05.2011, 15:09. Показов 2045. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему в обработчике кнопки недоступна переменная из Form_Load??

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
private void Form2_Load(object sender, EventArgs e)
        {...
SqlDataReader datar = comm.ExecuteReader();
                try
                {
                    while (datar.Read())
                    {
                        comboBox1.Items.Add(datar["Nazvanie_otelya"].ToString());
                        string n = textBox1.Text;
                    }
                }
                finally { datar.Close(); }
}
private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            SqlInt32 days;
            try
            {
                days = SqlInt32.Parse(n);//текст ошибки: "The name 'n' does not exist in the current context"
            }
            catch
            {
                MessageBox.Show("Введенное количество дней не является целым числом");
            }
            SqlInt32 price = Convert.ToInt32(comboBox1.SelectedValue);         
            textBox2.Text += SqlInt32.Multiply(price,days);
        }
Во втором текстбоксе должно выводиться произведение.

Перепробовала уже все, что знала(( подскажите, как исправить, пожалуйста.
Заранее огромное спасибо!!)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2011, 15:09
Ответы с готовыми решениями:

Неправильно работает if в обработчике нажатия кнопки
Работаю с БД, пользователь может выполнять запрос к базе по нескольким условиям, которые вводит в textbox. Пытаюсь обработать что если в...

Остановить бескон. цикл в обработчике кнопки
MFC приложение. Хочу что-то типа этого. 2 обработчика для кнопок OK и Cancel bool flag; //... void CMFCDlg::OnBnClickedOk() { ...

Почему недоступен список в обработчике?
public partial class Form1 : Form { public class XYZ { public XYZ(int x, int y) { ...

12
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
16.05.2011, 15:14
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
string n;//вот тут ее нужно объявить
/**************************/
private void Form2_Load(object sender, EventArgs e)
{
     SqlDataReader datar = comm.ExecuteReader();
     try
     {
           while (datar.Read())
           {
                 comboBox1.Items.Add(datar["Nazvanie_otelya"].ToString());
                 n = textBox1.Text;//тут ей присвоить значение.
           }
     }
     finally { datar.Close(); }
}
 
private void button2_Click(object sender, EventArgs e)
{
     textBox2.Text = "";
     SqlInt32 days;
     try
     {
            days = SqlInt32.Parse(n);//а тут ее использовать
     }
     catch
     {
            MessageBox.Show("Введенное количество дней не является целым числом");
     }
     SqlInt32 price = Convert.ToInt32(comboBox1.SelectedValue);         
     textBox2.Text += SqlInt32.Multiply(price,days);
}
1
Заблокирован
16.05.2011, 15:14
переменная находится за пределами области видимости
вынесите объявление переменной за Form2_Load
C#
1
2
3
4
5
6
7
        string n;
        private void Form2_Load(object sender, EventArgs e)
        {
            ...
            n = textBox1.Text;
            ...
        }
опередили
1
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21
16.05.2011, 19:53  [ТС]
Сработало, но теперь ругается на days в строчке
C#
1
textBox2.Text += SqlInt32.Multiply(price,days);
Попробовала перенести SqlInt32 days; из обработчика кнопки, так выскакивает ошибка из catch
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
16.05.2011, 20:01
У вас days объявлена,но ей не присвоено значение.
0
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21
16.05.2011, 20:27  [ТС]
Так разве не должно присваиваться в этой строчке??
C#
1
days = SqlInt32.Parse(n);
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
16.05.2011, 21:12
Простите,недоглядел.
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
16.05.2011, 21:20
Цитата Сообщение от Lenk@ Посмотреть сообщение
Сработало, но теперь ругается на days в строчке
ругается когда? рантайм? или компиляция?

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

если ошибка рантайм - пройдись отладчиком, посмотри, нормально ли у тебя значение передается?

и вообще - какая ошибка то?
0
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21
16.05.2011, 21:39  [ТС]
Вот весь код. Суть в том, чтобы в текстбоксе 1 ввести целое число, затем из комбо выбрать поле из БД и вывести в текстбоксе 2 произведение введенного числа и соответствующего значения из базы.

При компиляции выдает: "Use of unassigned local variable 'days' "

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace kursovaya
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        string connStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\kursovaya\kursovaya\Oteli.mdf;Integrated Security=True;User Instance=True";
        DataTable dt1 = new DataTable();
        string n;
        
 
        private void Form2_Load(object sender, EventArgs e)
        {            
            SqlConnection conn = new SqlConnection(connStr);
            using (conn)
            {
                SqlCommand comm = new SqlCommand("SELECT Nazvanie_otelya FROM Table1;", conn);
                SqlDataAdapter ad = new SqlDataAdapter(comm);
                ad.Fill(dt1);
                conn.Open();
                                
                SqlDataReader datar = comm.ExecuteReader();
                try
                {
                    while (datar.Read())
                    {
                        comboBox1.Items.Add(datar["Nazvanie_otelya"].ToString());
                        n = textBox1.Text;
                    }
                }
                finally { datar.Close(); }                
            }        
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            SqlInt32 days;
            try
            {
                days = SqlInt32.Parse(n);
            }
            catch
            {
                MessageBox.Show("Введенное количество дней не является целым числом");
            }
            int pr = Convert.ToInt32(comboBox1.SelectedValue);
            SqlInt32 price = pr;
    
            textBox2.Text += SqlInt32.Multiply(price,days);
        }
              
    }
}
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
16.05.2011, 21:52
когда ты заключаешь код в конструкцию try..catch - компилятор не уверен что код выполнится..
в качестве решения предлагаю сделать что-то вроде такого (пишу в браузере, могут быть косяки):
C#
1
2
3
4
5
6
7
8
9
10
11
textBox2.Text = "";
            SqlInt32 days;
 
            bool res = SqlInt32.TryParse(n, out days);
            if (!res) MessageBox.Show("Введенное количество дней не является целым числом");
            else
            {
               int pr = Convert.ToInt32(comboBox1.SelectedValue);
               SqlInt32 price = pr;
               textBox2.Text += SqlInt32.Multiply(price,days);
            }
1
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21
16.05.2011, 22:38  [ТС]
попробовала.. правда несколько изменила, т.к. иначе не получается
Вместо
C#
1
bool res = SqlInt32.TryParse(n, out days);
написала
C#
1
2
SqlBoolean res;
res = SqlInt32.Parse(n,days);
пишет "No overload for method 'Parse' takes 2 arguments" в этой строчке
res = SqlInt32.Parse(n,days);
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
16.05.2011, 22:49
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Lenk@, эта ошибка означает,что метод "Parse" не принимает 2 перегрузки. А вы как раз пытаетесь "впихнуть" в него 2 аргумента: "n" и "days".
C#
1
2
3
4
//Или так:
SqlInt32.Parse(n);
//или так:
SqlInt32.Parse(days);
1
 Аватар для Lenk@
7 / 7 / 2
Регистрация: 29.04.2010
Сообщений: 21
16.05.2011, 23:14  [ТС]
Точно!! Теперь работает как нужно!))) я еще там немного подправила..
Всем огромное спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2011, 23:14
Помогаю со студенческими работами здесь

Ошибка в обработчике кнопки - ArrayNodeSceme отсутствует в текущем контексте
private void toolStripBtnCalculate_Click(object sender, EventArgs e) { this.Validate(); ...

Получить индекс массива созданной динамической кнопки в её обработчике
Как получить индекс массива созданной динамической кнопки в её обработчике?

Почему в обработчике событий не выполняется блок If?
private void Combobox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { IsInCheckBox.IsEnabled = true; ...

Почему недоступна кнопка добавления записи из формы?
Всем доброго времени суток! Почему-то недоступна кнопка для создания новой записи из формы. Форма состоит из полей трех таблиц... ...

Как в обработчике нажатия кнопки использовать локальную переменную другого метода?
Нужно чтобы в методе кнопки clicked() можно было использовать переменную db из MainWindow #include "mainwindow.h" #include...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru