Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Изменение свойств объекта


Автор: slutsker 4.12.2008, 01:22
Вот такая вот ситуация:
есть листбокс, в который помешён массив listboxItem'ов, 
у каждого в свойстве Content написано что-то вроде "Элемент № <номер эл-та массива>", то есть имеем 
Код

Элемент № 1
Элемент № 2
.......
Элемент № К


но выглядит это скучно, потому я решил добавить возможность менять содержимое свойства Content.
Я сделал кнопочку с текстбоксом, в который вписываю содержимое контента того listboxItem'а, по которому щёлкнули, но остался вопрос: что написать в обработчик к этой кнопочке, чтобы содержимое текстбокса стало контентом имеено указанного listboxItem'а?
Я сделал ф-ию с двумя параметрами, что-то типа
Код

public void F(int a, string s){
listboxitems[a].Content = S;}

но не смог вписать ее в обработчик к событию Click кнопки(
В общем жду советов) smile 

Автор: kelus 4.12.2008, 02:07
если я правильно понял, и "не смог вписать" означает, что она не работала, то надо так:
Код

public void F(int a, string s)
        {
            ((ListBoxItem)listBox1.Items[a]).Content = s;
        }

если я не так понял - поясни плз =)

Автор: slutsker 4.12.2008, 08:10
нет, просто я не смог посадить в обоработчик кнопке
button b = new button();
b.Click += New RoutedEventHendler(F(1, "hello")) - он ругается - мол нет такого метода

Автор: kelus 4.12.2008, 11:00
ааа... тогда извиняюсь - не понял, потому что удивился проблеме =)
в функцию по событию передаются определенные аргументы, т.е. должно быть примерно так:
Код

b.Click += new RoutedEventHandler(b_Click);
......
void b_Click(object sender, RoutedEventArgs e)
        {
            F(1, "hello");
        }

Автор: slutsker 4.12.2008, 13:03
это, конечно, здорово, только число и строка в ф-ии  F(1, "hello"); меняются
я же получаю из текстбокса строку - вот ее и надо передать, а в качестве цирфы передаётся номер эл-та в массиве

Автор: kelus 4.12.2008, 13:15
заведи переменную в классе, в которую передается номер элемента (например i)
а функцию вызывай так:
Код

void b_Click(object sender, RoutedEventArgs e)
        {
            F(i, TextBox.Text);
        }

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

Автор: slutsker 5.12.2008, 07:42
так и пришлось делать) Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)