“un” Ne contient pas une définition pour“b” et aucune méthode d'extension ' b ' acceptant un premier argument de type
J'ai une erreur dont je ne peux pas corriger:
Error 1 'System.Windows.Forms.Label' does not contain a definition for 'Copy'
and no extension method 'Copy' accepting a first argument of
type'System.Windows.Forms.Label'
could be found (are you missing a using directive or an assembly reference?)
//path 156 22 FileWatcherEigen
Qui a été mon erreur. Quelqu'un peut-il m'aider et m'expliquer ce qui s'est passé?
C'est mon code:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private bool pause = false;
private bool cut1 = false;
private bool copy1 = false;
public Form1()
{
InitializeComponent();
}
//The lines with performed actions of a file
private void fileSystemWatcher1_Created(object sender,System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher2_Changed(object sender, System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher2_Created(object sender, System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher2_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
private void fileSystemWatcher2_Renamed(object sender, System.IO.RenamedEventArgs e)
{
if (!pause)
{
listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now);
}
}
//1st directory
private void button2_Click(object sender, EventArgs e)
{
if (dlgOpenDir.ShowDialog() == DialogResult.OK)
{
fileSystemWatcher1.EnableRaisingEvents = false; //Stop watching
fileSystemWatcher1.IncludeSubdirectories = true;
fileSystemWatcher1.Path = dlgOpenDir.SelectedPath;
textBox1.Text = dlgOpenDir.SelectedPath; //Text of textBox2 = Path of fileSystemWatcher2
fileSystemWatcher1.EnableRaisingEvents = true; //Begin watching
}
}
//2nd directory
private void button3_Click(object sender, EventArgs e)
{
if (dlgOpenDir.ShowDialog() == DialogResult.OK)
{
fileSystemWatcher2.EnableRaisingEvents = false; //Stop watching
fileSystemWatcher2.IncludeSubdirectories = true;
fileSystemWatcher2.Path = dlgOpenDir.SelectedPath;
textBox2.Text = dlgOpenDir.SelectedPath; //Text of textBox2 = Path of fileSystemWatcher2
fileSystemWatcher2.EnableRaisingEvents = true; //Begin watching
}
}
//log
private void button1_Click(object sender, EventArgs e)
{
DialogResult resDialog = dlgSaveFile.ShowDialog();
if (resDialog.ToString() == "OK")
{
FileInfo fi = new FileInfo(dlgSaveFile.FileName);
StreamWriter sw = fi.CreateText();
foreach (string sItem in listBox1.Items)
{
sw.WriteLine(sItem);
}
sw.Close();
}
}
//pause watching
private void pause_button_Click(object sender, EventArgs e)
{
if (!pause)
{
pause = true;
pause_button.Text = "Unpause";
}
else
{
pause = false;
pause_button.Text = "Pause Watching";
}
}
//clear listbox
private void clear_button_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void Transfer_Click(object sender, EventArgs e)
{
if (copy1)
{
File.Copy(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text))));
}
}
private void Browse_file_Click(object sender, EventArgs e)
{
DialogResult resDialog = openFileDialog1.ShowDialog();
if (resDialog == DialogResult.OK)
{
FileBrowseBox.Text = openFileDialog1.FileName;
}
}
private void Browse_destination_Click(object sender, EventArgs e)
{
DialogResult resDialog = folderBrowserDialog1.ShowDialog();
if (resDialog == DialogResult.OK)
{
DestinationBox.Text = folderBrowserDialog1.SelectedPath;
}
}
private void CopyButton_CheckedChanged(object sender, EventArgs e)
{
copy1 = true;
}
}
}
Il dit que le problème est dans ce cadre:
File.Copy(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text))));
J'ai essayé de le trouver sur ce forum, mais je ne pouvais pas vraiment trouver la réponse ou de la solution
À ce qu'elle fonctionne avec ce code:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private bool cut = false;
private bool copy = false;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
File.Copy(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileBox.Text, Path.GetExtension(FileBrowseBox.Text))));
label2.Text = "File Transfer Succeeded";
}
private void button2_Click(object sender, EventArgs e)
{
DialogResult resDialog = openFileDialog1.ShowDialog();
if (resDialog == DialogResult.OK)
{
FileBrowseBox.Text = openFileDialog1.FileName;
label2.Text = "";
}
}
private void button3_Click(object sender, EventArgs e)
{
DialogResult resDialog = folderBrowserDialog1.ShowDialog();
if (resDialog == DialogResult.OK)
{
DestinationBox.Text = folderBrowserDialog1.SelectedPath;
label2.Text = "";
}
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
copy = true;
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
cut = true;
}
}
}
OriginalL'auteur Loko | 2013-06-10
Vous devez vous connecter pour publier un commentaire.
Vous obtenez ce message, car vous avez une étiquette nommée
File
sur votre formulaire qui est référencé plutôt queSystem.IO.File
. Vous pouvez renommer leLabel
, qui je le recommande, ou vous pouvez utiliser le chemin d'accès complet deSystem.IO.File.Copy
à la place.Même erreur? Est-ce que votre ligne est encore dire
File.Copy
, ou avez-vous changé demyNewLabelName.Copy
?Et c'est pourquoi vous devez vous en tenir aux conventions de codage indiquant que les noms de variables doivent commencer par une lettre minuscule.
Michael Perrenoud pouvez-vous aussi me dire comment faire pour ajouter une option de coupe au lieu d'une copie de l'option?
eh bien, le problème ici est qu'un Label avait le même nom qu'une classe que vous essayiez de référence. Mon conventions sont généralement de type abréviation + objectif pour les contrôles (par exemple, lblFile) dans ce cas. Il ne garder de conflits, mais il est aussi plus facile de comprendre ce que je suis le référencement. Mon champs de la classe commencent toutes par un _ et de commencer avec une minuscule.
OriginalL'auteur Mike Perrenoud
Apparemment, vous avez un
Label
nomméFile
. Il les ombres de laSystem.IO.File
classe et les causes de l'erreur. Spécification nom complet de la classe devrait éliminer le problème:OriginalL'auteur Andrei
Ok j'ai eu cette fâcheuse erreur d'aujourd'hui et de “une” NE contiennent une définition de “b”.
Je suis entré dans ce désordre après l'ouverture de la solution dans VS2012 et en l'ouvrant VS2010.
S'avère par la suppression de la référence de la DLL dans le projet, la construction de la référence DLL projet, puis re-référencement permis VS pour voir la définition.
OriginalL'auteur Jeremy Thompson
Juste à noter. J'ai eu d'erreur similaire pendant le débogage, après, j'ai renommé la propriété dans la classe. Tout vérifié, même cherché ancien nom de la propriété de la sorcière ctrl+maj+f5 dans toutes les solution. Rien trouvé...
Après un certain temps, j'ai remarqué existantes point d'arrêt avec " Quand frappe... l'état de santé de la valeur de sortie de l'ancienne propriété.
OriginalL'auteur hQuse
Il y a un autre cas simple où cela se produira. Disons que vous ajoutez un outil comme un "Bouton" de votre formulaire. Une fois que vous double-cliquez sur l'outil(dans Visual Studio) le code
private void button1_Click(object sender, EventArgs e) { }
sera créé dans votre Form1.cs. Le codethis.button1.Click += new System.EventHandler(this.button1_Click);
sera également créé dans votre Form1.Le concepteur.cs. Si vous avez supprimé la première série de code(pour n'importe quelle raison), alors vous aurez également besoin de supprimer la deuxième partie du code ou autre, vous obtiendrez cette erreur. Ce peut être un/simples de la situation, mais c'est une erreur que les nouveaux programmeurs peuvent courir dans.OriginalL'auteur Henry Mahoney