2017-01-06 1 views
-3

Ich versuche nur Informationen aus der Zwischenablage in einem einfachen Code zu erhalten. Ich habe viel gesucht, aber keiner der Beiträge hat mein Problem gelöst. Ich habe sichergestellt, dass ich System.Windows.Forms verwende; unten ist der Code. Vermisse ich etwas anderes?C# Fehler in der Zwischenablage konnte nicht gelöst werden.

//Rextester.Program.Main ist der Einstiegspunkt für Ihren Code. Ändere es nicht. // Compiler Version 4.0.30319.17929 für Microsoft (R) .NET Framework 4,5

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text.RegularExpressions; 
using System.Windows.Forms; 

namespace Rextester 
{ 
    public class Program 
    { 



     public static void Main(string[] args) 
     { 
      Clipboard.SetText(txtCopy.Text); 
      txtPaste.Text = Clipboard.GetText(); 

     } 
    } 
} 

Im Folgenden sind die Fehler, wenn ich den Code ausführen

Error(s): 
(22:13) The name 'Clipboard' does not exist in the current context 
(22:31) The name 'txtCopy' does not exist in the current context 
(23:13) The name 'txtPaste' does not exist in the current context 
(23:29) The name 'Clipboard' does not exist in the current context 
+0

Die Fehler bedeuten genau, was sie sagen. Wo sind diese Objekte definiert? – David

+0

@DStanley 'Clipboard' ist in der [' System.Windows.Forms'] (https://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard (v = vs.110). aspx) Namespace, OP darf uns nicht den Code zeigen, der den Fehler verursacht. Ich bekomme nur, dass "txtCopy" und "txtPaste" für seinen Code nicht existieren. edit: außerdem musste ich einen Verweis auf Formulare hinzufügen und das '[STAThread]' - Attribut zu dieser Konsolenanwendung hinzufügen, damit der OP-Code funktioniert .. Er versuchte, eine "minimale" Frage zu stellen, die ich nicht sehr gut machte . – Quantic

+1

@Quantic Du hast Recht. Ich schaute auf die WPF-Zwischenablage. Ich vermute, dass das OP den Winform-Code kopiert und in eine Konsolen-App eingefügt hat. –

Antwort

0

Sie haben die Program.main ändern() -Methode der Windows Form-Anwendung, und Sie starten kein Formular von ihm. Es sollte so etwas in dieser Methode geben.

 Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 

Dies ist die Methode, den Aufruf ist, wenn Sie das Programm ausführen, und die Initialisierung ist keine Form.

0

Sie müssen am Anfang der Datei auf System.Windows.Forms verweisen, um den Fehler Zwischenablage zu beheben. Die MSDN-Seite dafür ist here, wenn Sie suchen möchten.

Sie definieren auch niemals Ihre txtCopy und txtPaste Variablen, so dass diese auch als fehlende Referenzen angezeigt werden.

Ich nehme an, txtCopy und txtPaste sind eine Art von Eingabe in einem Formular? Wenn dies die Besetzung ist, initialisierst du dein Formular nicht, da du es nie erstellst, so dass nichts generiert wird. Selbst wenn Sie die Initialisierung hinzufügen, können Sie nicht über die Hauptmethode auf die Steuerelemente zugreifen, da die Objekte außerhalb des Bereichs liegen, da sie in der Form-Klasse selbst enthalten sind.

Wenn Sie eine VS Basic-Vorlage verwenden, sollten Sie Ihren Code wie folgt strukturieren, um Ihre Funktionalität zu erreichen.

Program.cs:

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
} 

Form1.cs

public Form1() 
{ 

    InitializeComponent(); 

    /* Once you call the InitializeComnents method you will be able to access controls added in design view */ 
    Clipboard.SetText(txtCopy.Text); 
    txtPaste.Text = Clipboard.GetText(); 
} 

Denken Sie daran, auch mit Aussagen!

Verwandte Themen