2017-05-14 12 views
0

et merci d'avoir pris le temps de lire ceci. J'utilise Visual Studio pour créer un programme qui stockera plusieurs profils de sauvegarde de lecteur flash sur des boutons dans une interface graphique C# en utilisant Visual Studio 2017. En fait, je reçois des erreurs que je n'arrive pas à comprendre, principalement à cause de cela. la première fois que j'ai travaillé en C# et que du code s'est caché de la part de Microsoft. -La première erreur concerne Controls.Add ne s'affiche pas pour un bouton, même si chaque source en ligne me dit comment ajouter un bouton à la ligne 78 de la fenêtre principale.Problèmes de bouton de base en C#

-La seconde implique que je ne sache pas comment donner à un bouton une méthode d'une autre classe à la ligne 76 de la fenêtre principale.

Le code: Profile.cs

using System; 
using Microsoft.VisualBasic.FileIO; 
public class Profile 
{ 
    private string mySource, myDestination, myName; 
    public Profile() 
    { 
     myName = myDestination = mySource = ""; 
    } 
    public Profile(string name, string source, string destination) 
    { 
     myName = name; 
     mySource = source; 
     myDestination = destination; 
     using (System.IO.StreamWriter file = 
      new System.IO.StreamWriter(@"C:\Users\Scott\Documents\Visual Studio 2017\Projects\WpfApp1\profiles.txt")) 
     { 
      file.WriteLine(myName); 
      file.WriteLine(mySource); 
      file.WriteLine(myDestination); 
      file.WriteLine("\n"); 
     } 
    } 
    public void backup() 
    { 
     try 
     { 
      FileSystem.CopyDirectory(mySource, myDestination, 
    UIOption.AllDialogs); 
     } 
     catch (System.IO.IOException e) 
     { 
      Console.WriteLine(e.Message); 
     } 
    } 
    public String getName() 
    { 
     return myName; 
    } 
} 

MainWindow.xaml.cs

using System; 
using System.Windows; 
using System.Windows.Controls; 
using System.IO; 

namespace WpfApp1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      refresh(); 

     } 

     private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      Console.WriteLine("Enter the name of the profile: "); 
      string name = Console.ReadLine(); 
      Console.WriteLine("Enter the folder which you want to copy (ENTER EXACTLY AS IN FILE SYSTEM): "); 
      string source = Console.ReadLine(); 
      Console.WriteLine("Enter backup destination (ENTER EXACTLY AS IN FILE SYSTEM): "); 
      string destination = Console.ReadLine(); 
      refresh(); 
     } 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      Console.WriteLine("Enter the EXACT name of the profile you want to delete: "); 
      string line = Console.ReadLine(); 

       string[] lines = File.ReadAllLines(@"C:\Users\Scott\Documents\Visual Studio 2017\Projects\WpfApp1\profiles.txt"); 
       for (int i = 0; lines[i] != null; i += 1) 
      { 
       if (lines[i] == line) 
       { 
        lines[i] = lines[i + 1] = lines[i + 2] = ""; 
        i += 2; 
       } 
      } 
      File.WriteAllLines(@"C:\Users\Scott\Documents\Visual Studio 2017\Projects\WpfApp1\profiles.txt", lines); 

     } 
     private void ButtonBackup(Profile pro) 
     { 
      pro.backup(); 
     } 
     public void refresh() 
     { 
      string[] lines = File.ReadAllLines(@"C:\Users\Scott\Documents\Visual Studio 2017\Projects\WpfApp1\profiles.txt"); 
      String reader = "placeholder"; 
      int i = 0; 
      while (reader != null) 
      { 
       reader = lines[i]; 
       i += 1; 
       if (reader != "\n") 
       { 
        String name = reader; 
        reader = lines[i]; 
        i += 1; 
        String source = reader; 
        reader = lines[i]; 
        String destination = reader; 
        i++; 
        Profile newprofile = new Profile(name, source, destination); 
        Button b = new Button(); 
        b.Name = name; 
        b.Click += new EventHandler(ButtonBackup(newprofile); //error 1 
        System.Windows.Controls.Add(b); //error 2 
       } 

      } 
     } 





    } 

    } 
+1

Suggestion: Le texte entier de votre question est un bitt déconner. L'en-tête et tout ce qui concerne la cible de votre application (sauvegarde ..) n'a rien à voir avec la question qui lit essentiellement pour moi "Comment écrire une application WPF en C# pour les débutants absolus". – Philm

+0

Vous attendez-vous à ce que les gens comptent les numéros de ligne dans votre code ci-dessus pour trouver les lignes 76 et 78? – elgonzo

+0

Oui, probablement une mauvaise formulation de ma part ... ce que je voulais dire, c'est que je ne peux pas voir le code qui fait les deux premiers boutons ("ajouter profil" et "supprimer le profil"), donc je n'ai pas un exemple à partir duquel travailler. – noob

Répondre

2

Etes-vous sûr, vous venez de créer l'application WPF dans le droit chemin? (Fichier/Nouveau/Projet .. Modèles/Windows classique de bureau ..)

Cliquez enfin sur il WPF app et tout est correctement configuré pour fonctionner avec WPF, en particulier avec les boutons ;-)

S'il vous plaît Il suffit de créer un nouveau projet comme celui-ci et de créer un bouton avant tout autre chose.

Vous semblez avoir commencé sans en savoir beaucoup sur WPF, donc lire ou regarder quelque chose à ce sujet avec quelques exemples, pourrait être utile.

Si le projet est frais, chose la plus facile est d'aller dans le fichier MainWindow.xaml, passez à la boîte à outils sur le côté gauche très très et faites glisser un bouton pour les fenêtres. (Si « boîte à outils » est pas là, ajoutez avec vue/Boîte à outils) par le menu)

code XAML contient quelque chose comme ceci:.

> <Grid> 
>   <Button> 
>    <Button Content="Button" Width="75"/> 
>   </Button> 
> </Grid> 

Puis double-cliquez sur le bouton dans la vue concepteur (non sur le code xml :-) et Visual studio crée automatiquement la fonction de gestionnaire d'événements de bouton pour vous et placez votre curseur là:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 

} 

Dans votre fichier MainWindow.xaml.cs, vous trouverez de nombreuses déclarations en utilisant, esp . le using System.Windows.Controls; mais vous pouvez les supprimer avec le clic droit de la souris et "Supprimer et trier les utilisations". Après ce point, vous avez prouvé vous-même que vous n'avez pas besoin de System.Windows.Controls pour travailler avec des commandes simples comme "Button" qui se trouvent dans la boîte à outils disponible!

+0

Juste ajouté tout à un nouveau projet, mais il donne les mêmes erreurs. Sauriez-vous savoir si déclarer "System.Windows" et "System.Windows.Controls" interfère avec l'appel "System.Windows.Controls.Add (b)", ou comment donner un appel de fonction à un bouton qui nécessite arguments supplémentaires? Je pense que c'est là que résident les problèmes. – noob

+0

Veuillez lire à nouveau la réponse nouvellement ajoutée. Il suffit de créer un nouveau projet sans ajouter quoi que ce soit (ce que vous voulez dire par "tout" dans votre phrase "Just added everything"). Vous pouvez créer un nouveau bouton très facilement comme décrit sans RIEN d'autre nécessaire. En particulier, vous n'avez pas besoin de System.Windows.Controls. Pourquoi voulez-vous utiliser une fonction Ajouter à partir de là ??? – Philm

+0

OK, lorsque vous avez déjà des boutons et que vous recherchez le fichier code-behind, vous pouvez cliquer droit sur le fichier MainWindows.xaml et soit choisir "Voir le code" ou "View designer" – Philm

0

J'ai déplacé ceci à une autre réponse parce que je crains que cela induise en erreur les débutants. Normalement, vous n'avez pas à faire ce qui suit en tant que débutant, car il est recommandé de commencer avec un nouveau projet WPF où tout est préparé. Mais si vous en savez plus, vous pouvez ajouter des éléments WPF manuellement à un projet. Comme:

Il suffit de copier le reste de votre code dans ce nouveau projet.Si vous voulez rester dans un autre projet déjà créé (mais pas pour WPF), vous devez le préparer manuellement pour cela, ce qui est possible, si vous avez appris quoi faire, mais pas avant.

Par exemple, En premier lieu, ajoutant projet références aux assemblées suivantes:

  • PresentationCore
  • PresentationFramework
  • WindowsBase

Deuxième: Ajout des déclarations correctes à l'aide, par exemple

using System.Windows;