【问题标题】:copy paste and cut clicks do not exist in current context当前上下文中不存在复制粘贴和剪切点击
【发布时间】:2017-04-02 10:47:32
【问题描述】:

我正在以编程方式创建一个上下文菜单,以便在我的数据网格上有右键单击选项。这是我的代码:

    public partial class Form1 : Form
{
    //string fileExcel;
    public Form1()
    {
        InitializeComponent();
        fillCari();
        FillCombo();
        ContextMenuStrip mnu = new ContextMenuStrip();
        ToolStripMenuItem mnuCopy = new ToolStripMenuItem("Copy");
        ToolStripMenuItem mnuCut = new ToolStripMenuItem("Cut");
        ToolStripMenuItem mnuPaste = new ToolStripMenuItem("Paste");
        //Assign event handlers
        mnuCopy.Click += new EventHandler(mnuCopy_Click);
        mnuCut.Click += new EventHandler(mnuCut_Click);
        mnuPaste.Click += new EventHandler(mnuPaste_Click);
        //Add to main context menu
        mnu.Items.AddRange(new ToolStripItem[] { mnuCopy, mnuCut, mnuPaste });
        //Assign to datagridview
        dataGridView1.ContextMenuStrip = mnu;


    }

这个特定的块我不断收到它在当前上下文中不存在的错误。知道为什么吗?

mnuCopy.Click += new EventHandler(mnuCopy_Click);
        mnuCut.Click += new EventHandler(mnuCut_Click);
        mnuPaste.Click += new EventHandler(mnuPaste_Click);

更新的问题:我从上下文菜单中创建了条带,但不知道如何实现复制命令。

public partial class Form1 : Form
{
    //string fileExcel;
    public Form1()
    {
        InitializeComponent();
        fillCari();
        FillCombo();
        ContextMenuStrip mnu = new ContextMenuStrip();
        dataGridView3.ContextMenuStrip = mnu;
    }


private void copyToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    private void cutToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

【问题讨论】:

  • 发布 exact 错误。 “它在当前上下文中不存在。”一点用都没有
  • 那些需要声明为成员,而不是局部变量。s
  • 附言。为什么要修改构造函数?在构造函数成功退出之前,表单甚至不存在。这就是您添加InitializeComponent 的原因吗,因为您不断收到错误消息?
  • @PanagiotisKanavos The name 'mnuCopy_Click' does not exist in the current context
  • 你应该有这样的事件处理方法private void mnuCopy_Click(object sender, EventArgs e){ /* Do something */ }

标签: c# winforms


【解决方案1】:

对于单击事件,您需要事件处理程序:

  // event click
  mnuCopy.Click += new EventHandler(mnuCopy_Click);
  mnuCut.Click += new EventHandler(mnuCut_Click);
  mnuPaste.Click += new EventHandler(mnuPaste_Click);

  // event handler method
  void mnuPaste_Click(object sender, EventArgs e) {
    // paste logic
  }
  void mnuCut_Click(object sender, EventArgs e) {
    // cut logic
  }
  void mnuCopy_Click(object sender, EventArgs e) {
    // copy logic
  }

【讨论】:

    【解决方案2】:

    我已经想通了一段时间了。希望它对将来的任何人都有帮助。请记住,在创建 contextMenuStrip 并将“复制”字段添加到条带后,您会将其绑定到 dataGridView。这是通过进入上下文菜单的属性并查找 dataGridView 名称并将其绑定到它来完成的。之后在 contextMenu 的属性中打开 click 事件并在其中添加以下代码:

     private void copyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridView3.Select();
            DataObject o = dataGridView3.GetClipboardContent();
            Clipboard.SetDataObject(o);
        }
    

    您现在应该可以使用右键单击复制按钮了。

    【讨论】:

      猜你喜欢
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多