2017-01-06 6 views
-3

Я пытаюсь просто получить информацию из буфера обмена в виде простого кода. Я много раз искал, но ни одна из должностей не разрешила мою проблему. Я гарантировал, что использую System.Windows.Forms; ниже - код. Я что-то пропустил?C# Невозможно решить ошибку в буфере обмена даже

//Rextester.Program.Main - это точка входа для вашего кода. Не меняйте его. // Compiler версии 4.0.30319.17929 для 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(); 

     } 
    } 
} 

Ниже приведены ошибки, когда я запускаю код

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

Ошибки означают именно то, что они говорят. Где какой-либо из этих объектов определен? – David

+0

@DStanley 'Clipboard' находится в [' System.Windows.Forms'] (https://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard (v = vs.110). aspx), OP не должен показывать нам код, который дает ошибку. Я получаю только то, что 'txtCopy' и' txtPaste' не существуют для его кода. edit: также мне пришлось добавить ссылку на формы и добавить атрибут '[STAThread]' в это консольное приложение, чтобы сделать код кода OP. Он пытался сделать «минимальный» вопрос, я думаю, и не очень хорошо работал , – Quantic

+1

@Quantic Вы правы. Я смотрел в буфер обмена WPF. Я подозреваю копию OP и вставил код Winform в консольное приложение. –

ответ

0

Вы изменить Program.main (метод) приложения формы окна, и вы не запускаете из него какую-либо форму. В этом методе должно быть что-то подобное.

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

Это метод, который вызывается при запуске программы и не инициализирует какую-либо форму.

0

Вам необходимо указать System.Windows.Forms в начале вашего файла, чтобы разрешить отсутствующую ошибку в Clipboard. Страница MSDN для него - here, если вы хотите посмотреть.

Вы также никогда не определяете переменные txtCopy и txtPaste, поэтому они также отображаются как недостающие ссылки.

Я принимаю txtCopy и txtPaste - это какой-то вход в форму? Если это бросок, вы не инициализируете свою форму, поскольку никогда не создаете ее, поэтому ничего не будет создано. Если вы добавите инициализацию, вы не сможете получить доступ к элементам управления из основного метода, так как объекты будут недоступны, поскольку они содержатся в самом классе Form.

Предполагая, что вы используете базовый шаблон VS, вы должны структурировать свой код следующим образом, чтобы достичь своей функциональности.

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(); 
} 

Помните ваши используя операторы тоже!