Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 23:32   #1
bead
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 16
По умолчанию Переменная в C#

Всем доброго времени суток. Может быть для опытного вопрос покажется глупым , но я новичек и облазил много сайтов но ответа на него так и не нашел.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication10
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            int i = Convert.ToInt32(textBox1.Text);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "cmd";
            p.StartInfo.Arguments = "/C shutdown /s /t i:{0}";
            p.StartInfo.Arguments = "/K shutdown /s /t ";
            p.Start();
            MessageBox.Show(i);
        }
    }
}
Вот собственно код в c#-windows forms. Я написал MessageBox.Show(i); только чтоб проверить верно ли он определяет переменную I юзер должен ввести ее в текстбокс и потом чтоб я мог с ней работать но он мне пишет что переменная i не существует в текущем контексте. Я понимаю что они находятся в разных фигурных скобках но как мне использовать введеные в текстбокс данные в кнопке?


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.05.2011 в 09:03.
bead вне форума Ответить с цитированием
Старый 30.04.2011, 23:44   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
юзер должен ввести ее в текстбокс и потом чтоб я мог с ней работать но он мне пишет что переменная i не существует в текущем контексте.
Можно объявить переменную на уровне класса:
Код:
public partial class Form1 : Form
{
     int i;

     public Form1()
     {
          InitializeComponent();
     }
...
или
Цитата:
Я понимаю что они находятся в разных фигурных скобках но как мне использовать введеные в текстбокс данные в кнопке?
Получать значение на событии TextChanged() не лучшая идея.
Можно написать так:
Код:
private void button1_Click(object sender, EventArgs e)
{
    int i = 0;
    try
    {
        i = Convert.ToInt32(textBox1.Text);
    }
    catch
    {
        MessageBox.Show("Необходимо ввести целое число!");
        return;
    }
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.FileName = "cmd";
    p.StartInfo.Arguments = "/C shutdown /s /t i:{0}";
    p.StartInfo.Arguments = "/K shutdown /s /t ";
    p.Start();
    MessageBox.Show(i);
}
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.05.2011, 11:41   #3
bead
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 16
По умолчанию

Большое спасибо за помощь. Вроде все должно работать но вот ошибка
"WindowsFormsApplication10.Form 1" не содержит определения для "textBox1_TextChanged" и не был найден метод расширения "textBox1_TextChanged", принимающий тип "WindowsFormsApplication10.Form 1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
Это проблема в моем visual studio или как?
bead вне форума Ответить с цитированием
Старый 01.05.2011, 11:48   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
"WindowsFormsApplication10.Form 1" не содержит определения для "textBox1_TextChanged" и не был найден метод расширения "textBox1_TextChanged", принимающий тип "WindowsFormsApplication10.Form 1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
Вы удалил метод textBox1_TextChanged() ?
нужно также удалить подписку на этот метод в файле Form1.Designer.cs.
Строка:
Код:
this.button1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
(Кликните дважды по ошибке в ErrorList, там откроется нужный файл.)
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.05.2011, 11:50   #5
bead
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 16
По умолчанию

Все сработало

Только вот в строке
Код:
p.StartInfo.Arguments = "/C shutdown /s /t i:{0}";
он не вставляет в ходе выполнения вместо i:{0} то, что я ввел в поле

Последний раз редактировалось Stilet; 01.05.2011 в 15:10.
bead вне форума Ответить с цитированием
Старый 01.05.2011, 11:58   #6
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Только вот в строке p.StartInfo.Arguments = "/C shutdown /s /t i:{0}";
он не вставляет в ходе выполнения вместо i:{0} то, что я ввел в поле
Для этого необходимо использовать String.Format().
Код:
p.StartInfo.Arguments = String.Format("/C shutdown /s /t i:{0}", i);
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.05.2011, 12:17   #7
bead
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 16
По умолчанию

Странно все равно запускает только shutdown /s /t а i не использует
bead вне форума Ответить с цитированием
Старый 01.05.2011, 12:29   #8
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Странно все равно запускает только shutdown /s /t а i не использует
Какую именно строку необходимо получить?
Код:
String.Format("/C shutdown /s /t {0}", i);
при i = 4 вернет такую строку:
Код:
"/C shutdown /s /t 4"
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 01.05.2011, 12:32   #9
bead
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 16
По умолчанию

Большое спасибо!!!!Все заработало!!!!!
bead вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальная переменная mutabor JavaScript, Ajax 2 31.12.2010 12:23
переменная в адресе Shaggrath Помощь студентам 9 17.07.2009 21:05
Общая переменная Артэс Общие вопросы C/C++ 4 18.06.2009 16:24
Почему переменная а = 2??? Paul_AG Общие вопросы C/C++ 2 25.05.2009 18:55
Переменная и Memo ben95 Общие вопросы Delphi 2 18.04.2009 12:10