2016-12-15 2 views
0

C'est peut-être une petite chose, mais je ne trouve pas la réponse. Ce que je veux, c'est quand vous ajoutez des nombres dans le ListBox, que lorsque vous appuyez sur le "plus grand bouton", il affichera le plus grand nombre de la liste.C# WPF: Trouver la plus grande valeur avec un bouton dans ListBox

Voici l'image à quoi ça ressemble: Image Link

Ce code.

private void addButton_Click(object sender, RoutedEventArgs e) 
    { 
     ListBoxItem newItem = new ListBoxItem(); 
     newItem.Content = addNumberTextBox.Text; 
     numberListBox.Items.Add(newItem); 
    } 

    private void sumButton_Click(object sender, RoutedEventArgs e) 
    { 
     int sum = 0; 
     foreach (ListBoxItem item in numberListBox.Items) 
     { 
      sum += Convert.ToInt32(item.Content); 
     } 
     sumTextBox.Text = Convert.ToString(sum); 
    } 

    private void largestButton_Click(object sender, RoutedEventArgs e) 
    { 
     ???? 
    } 
} 
+0

double possible de [Comment faire pour trouver la valeur la plus grande et la plus faible en zone de liste] (http://stackoverflow.com/questions/7963144/how-to-find-the-greatest-and-lowest-value-in-listbox) – abdul

+2

Au lieu d'ajouter explicitement ListBoxIte ms avec des chaînes de nombres comme contenu, vous devez lier votre ListBox à un 'ObservableCollection ' dans un modèle de vue. Les opérations numériques (comme Sum et Largest) doivent être implémentées en tant que méthodes dans le modèle de vue qui fonctionne sur ObservableCollection. Rechercher sur le Web pour MVVM. – Clemens

+0

Jetez également un coup d'œil à l'article [Data Templating Overview] (https://msdn.microsoft.com/en-us/library/ms742521 (v = vs.110) .aspx) sur MSDN. – Clemens

Répondre

0
private void largestButton_Click(object sender, RoutedEventArgs e) 
    { 
      int largest= 0; 
      foreach (ListBoxItem item in numberListBox.Items) 
      { 
       if (Convert.ToInt32(item.Content)>largest) 
        largest=Convert.ToInt32(item.Content); 

      } 
      largestTextBox.Text = Convert.ToString(largest); 
    } 
0

Vous pouvez faire quelque chose comme ceci:

int highestNum = 0; 

foreach (ListBoxItem item in numberListBox.Items) 
{ 
    if (item > highestNum) 
    { 
     highestNum = item; 
    } 
} 

highestNumTextbox.text = highestNum; 
2

LINQ il est simple,

var items = numberListBox.Items.OfType<ListBoxItem>; 
var numbers = items.Select(x => Convert.ToInt32(x.Content)); 
var largest = numbers.Max();