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


Автор: slutsker 19.8.2008, 17:20
хочу при нажатии кнопки передать параметр
 
Код

<button click="button_click">


Код

private void button_Click(object sender, RoutedEventArgs e)
        { 

           /*вот тут я хочу использовать параметр который передам от кнопки*/

        }



просто кнопок будет много и отличаться их обработчики будут лишь их параметрами поэтому я и хочу передать что-то вместе с нажатием

Автор: Idsa 21.8.2008, 05:31
slutsker, заносите этот параметр в свойство Tag кнопки, а затем:
Код

private void button_Click(object sender, RoutedEventArgs e)
        { 
          Button button = (Button)sender;
          MyType myType = (MyType)button.Tag;
          ...
        }

Автор: slutsker 21.8.2008, 12:25
Idsa, большое спасибо, 
только из-за полного незнания C# у меня пофвился второй вопрос:
в качестве параметра я бы хотел чтобы выступал объект, то есть ф-ия к тому объекту который был в параметре применяет некоторые св-ва.
как это лучше сделать?

мне в голову пришло лишь:
Код



       private void button_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            String i = (String)button.Tag;
         
          

            switch (i)
            {
                case "1": object_1.Text =.........; break;
                case "2": object_2.Text =.........; break;
                case "3": object_3.Text =.........; break;
            }
            
        }




Автор: Partizan 21.8.2008, 14:43
slutsker, пихай в Tag object и приводи его к нужному типу

Автор: Kefir 21.8.2008, 21:18
slutsker, слушай Partizan. Поле Tag специально имеет тип object для того, чтобы не ограничивать пользователя (то биш тебя) каким-то конкретным типом.

Автор: slutsker 22.8.2008, 22:16
Kefir,  так как ты предлогаешь объект? в частности Grid name= "layer_!"  smile 

Автор: Kefir 22.8.2008, 23:11
slutsker, прошу прощения, не мог бы ты более развёрнуто? а то я вопроса не понял.....

Автор: slutsker 23.8.2008, 13:00
Kefir, это нормально, что вопроса не понял, но совет дал!

итак вот суть - есть две кнопки и 
 <Grid x:Name="layer_1" ......>
<Grid x:Name="layer_2" ......>

что передать в Tagи этих кнопок, чтобы в обрабочтичике получить доступ одному из объектов smile 

Автор: Partizan 24.8.2008, 22:13
slutsker, передать layer1 или layer_2 в Tag, а при извлечении проверить на is Grid и если да,то привести его к Grid

Автор: Kefir 24.8.2008, 23:33
slutsker, если вопрос заключается в том как запихать это прямо в XAML, то тебе поможет {DynamicResource ...}. Если нет, то просто myButton.Tag = myGrid;

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