2012-06-01 5 views
0

Я новичок в C#, и я хочу преобразовать значение ползунка в текстовое поле. Один из найденных опций привязан для текстового поля, но мне нужно отправить значение в событии. Я пробовал некоторые решения, но не работал.Как преобразовать значение ползунка в текстовое поле

private void sliderName_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 
     Slider sliderName = sender as Slider; 
     TextBox textBoxName = new TextBox(); 

     textBoxName.Text = sliderName.Value.ToString(); 

    } 

Спасибо, что помогли и проявили терпение. :)

ответ

1

Вы создаете новый TextBox, но не позиционирует его в любом месте.

У вас должен быть свой TextBox уже на вашей форме и указать его по имени, которое вы дали ему во время разработки в среде IDE. Например, если вы просто уронить TextBox на форме, IDE будет дать ему имя, как textBox1, и использовать его под этим именем:

private void sliderName_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e) 
{ 
    // Don't use the same name used on the form if you're 
    // declaring a variable here. Use a name that's local to 
    // this event. 
    Slider slide = sender as Slider; 

    // Use the IDE-set name here. 
    difficultyBox.Text = slide.Value.ToString(); 

} 

Обновлено отражает изменение названия, основываясь на комментарий ниже.

+0

Я использую то же имя в IDE и в этой процедуре. – Crooker

+0

Нет, вы ** создаете ** один в своей процедуре, который выводит один из IDE из области видимости (его не видно). Как я уже сказал, * удалите * строку, которая создает новую в обработчике событий (строка с 'new TextBox()' в ней). –

+0

Это дало мне ошибку «nullreferenceexception was unhandled». Это было мое первое решение. – Crooker

0

Возможно, ваш подход будет работать, за исключением того, что вы объявляете новый TextBox локальным для этого обработчика событий, так что вы никогда ничего не увидите на экране.

Попробуйте установить свойство .Text TextBox в вашей форме;

private void sliderName_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    Slider sliderName = sender as Slider; 
    difficultyBox.Text = sliderName.Value.ToString(); 
} 
+0

Если я установил некоторое значение в форме, после перемещения ползунка ничего не изменилось. Crooker

+0

Обновленный код, основанный на этом комментарии, - установите свойство .Text для «трудного бокса» –

+0

для Slider posuvnik = отправителя в качестве слайдера; трудностьBox.Text = posuvnik.Value.ToString(); У меня ошибка «nullreferenceexception была необработанной» – Crooker

0

или даже более быстрый способ:

private void sliderName_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
textBox1.Text = ((Slider)sender).value.ToString(); 
} 

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

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

+0

Быстрее здесь не проблема. Вопросник, очевидно, не знаком с C#. Научите основы, прежде чем преподавать оптимизацию. (И вы на самом деле не отвечаете на заданный вопрос, и вам нужно будет доказать мне, что ваш путь на самом деле ** быстрее ** таким образом, который имеет значение. Это может быть ** короче ** из но с точки зрения производительности это не имеет значения, и из точки удобочитаемости для нового программиста это не так понятно.) –

+0

Извините, я просто показывал другой способ сделать это. Но ваше право; Я должен объяснить. – Botonomous

+0

@ KenWhite Woah man, я никоим образом не означал, что было быстро в отношении производительности, я имел в виду быстрее писать и читать ... Я определенно не пытался быть грубым, я просто предоставлял плакат другим способом делать что-то. Я понимаю, что недостаток объяснений в том, что он может казаться таким, но, пожалуйста, не ошибайтесь. – Botonomous

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