2013-10-01 3 views
-4

Я довольно новичок в C#, и я пытаюсь изменить высоту прямоугольника на значение числа в текстовом поле, когда я нажимаю кнопку.Изменить высоту прямоугольника со значением в текстовом поле

Так что, когда я жёстко его я получаю

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
    { 
     rct2010.Height = 150; 
    } 

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

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
    { 
     rct2010.Height = txt2010.Text; 
    } 

Но это не работает. Может ли кто-нибудь помочь мне с этим?

+1

** Как ** это не работает? Какую часть сообщения об ошибке вы не понимаете? – SLaks

+1

Высота - целое число, но текст - это строка. Это небезопасно, если строка не может разобрать целое число, но оно будет работать для вашего простого примера. –

+0

@BillGregg, № Высота - это двойная. Такая же разница с контекстом здесь, но стоит указать, так как вы вызывали OP на нем :) –

ответ

0

Высота - целое число, но текст - это строка. Это небезопасно, если строка не может разобрать целое число, но оно будет работать для вашего простого примера.

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
{ 
    rct2010.Height = int.Parse(txt2010.Text); 
} 

Чтобы быть действительно безопасным, вы должны использовать TryParse.

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
{ 
    int height; 
    if(int.TryParse(txt2010.Text,out height)) 
    { 
     rct2010.Height = height; 
    } 
    else 
    { 
     rct2010.Height = 150; 
    } 
} 
+0

спасибо за быстрый ответ. Int.Parse отлично работает Я никогда не ожидал такого быстрого ответа. благодаря! –

+1

@ArnVanhoutte, вместо комментариев «спасибо», пожалуйста, прочитайте это ... http://stackoverflow.com/help/someone-answers - thanks –

0

преобразовать его в Int

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
    { 
     rct2010.Height = int.Parse(txt2010.Text); 
    } 

или вы можете пойти на шаг дальше

private void btnGrafiek_Click(object sender, RoutedEventArgs e) 
{ 
    int i = 0; 
    if(int.TryParse(txt2010.Text, out i) 
     rct2010.Height = i; 
    else 
     MessageBox.Show("That's not a number"); 
} 
0

Предположительно тип Height является int, и поэтому присваивание значения типа string воны работайте, и вы получите сообщение об ошибке времени компиляции, как таковое (не стесняйтесь уточнять); вам необходимо преобразовать тип, например:

int height = 0; 
if (int.Parse(txt2010.Text, out height)) { 
    rct2010.Height = height; 
} 

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

Смежные вопросы