2013-06-13 4 views
0

J'ai ces deux méthodes et je dois les utiliser pour modifier l'élément sélectionné dans un ListBox et après l'éditer dans le même txtBox que je utilise pour remplir le ListBox pour le récupérer et le remplacer C'est avec l'ancien.Passing params à EventMethod dans Visual C#

private void txtBox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      List.Items.Add(Label.Content); 
      Label.Content = ""; 
      txtBox.Text = ""; 
     } 
    } 

    private void ButtonModify_Click(object sender, RoutedEventArgs e) 
    { 
     int index = List.SelectedIndex; 
     object item = List.SelectedItem; 

     txtBox.Text = (string)item; 

     txtBox_KeyUp(????????); 
    } 

Mon intuition me dit que je dois appeler le MéthodeEvénement j'ai utilisé pour remplir la zone de liste, mais il y a certains paramètres que je ne peux pas enlever parce que j'ai besoin dans le txtBody_KeyUp(). Donc, ma question est ce que je dois écrire comme argument pour travailler ou est-ce qu'il y a un autre moyen de le faire?

+1

La présence de 'RoutedEventArgs' il me fait penser que c'est soit WPF ou toute autre technologie basée sur XAML , auquel cas vous ne devriez pas écrire ce type horrible de code-behind comme winforms, mais à la place vous devriez créer un ViewModel approprié et utiliser DataBinding. –

+2

Pourquoi ne pas les séparer en méthode séparée et les appeler de n'importe quel gestionnaire que vous voulez? – nawfal

Répondre

0

Vous pouvez utiliser le code ci-dessous.

Text Box PreviewKeyDown événement

private int _tmpIndex = -1; 

    private void TextBox_OnPreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key != Key.Enter || _tmpIndex == -1) return; 
     ListBox1.Items[_tmpIndex] = TextBox1.Text; 
     TextBox1.Text = ""; 
     _tmpIndex = -1; 
    } 

ListBox MouseDoubleClick événement

private void ListBox_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     if (ListBox1.SelectedIndex <= 0) return; 
     TextBox1.Text = ListBox1.SelectedItem.ToString(); 
     _tmpIndex = ListBox1.SelectedIndex; 
    } 

Have Fun