我做了一个资源管理器,我每次双击一个listviewitem都会执行keydown事件中copy()代码,为什么这样呢? private void listView2_KeyDown(object sender, KeyEventArgs e)
        {
           
            if (e.Control && e.KeyCode == Keys.A)
            {
                foreach (ListViewItem lvi in listView2.Items)
                {
                    lvi.Selected = true;
                }
            }
            else if (e.Control && e.KeyCode == Keys.C)
            {
                Copy();
            }
            else if (e.Control && e.KeyCode == Keys.X)
            {
                Cut();
            }
            else if (e.Control && e.KeyCode == Keys.V)
            {
                Paste();
            }
            else if (e.KeyCode == Keys.Delete)
            {
                Delete();
            }
           
            else if (e.KeyCode == Keys.Delete)
            {
                Delete();
            }
            else
            {
                return;
            }
            
        }

解决方案 »

  1.   

    你双击时干了什么呢,断点,看看堆栈调用,从哪进入的keydown
      

  2.   

    > Resource Manager.exe!DownloadFile.DownloadFrom.listView2_KeyDown(object sender = {System.Windows.Forms.ListView, Items.Count: 29, Items[0]: ListViewItem: {C#}}, System.Windows.Forms.KeyEventArgs e = {KeyData = 131139}) 行 1160 C#以上的是堆栈调用的提示,应该怎么看,谢谢!
      

  3.   

    我做了另一个例子
    namespace listviewddd
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                listView1.GridLines = true;
                listView1.Columns[0].Width = this.Size.Width;
                foreach (string file in Directory.GetFiles(@"D:\Files"))
                {
                    listView1.Items.Add(file);
                }
            }        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    return;
                }
                ListViewItem lv = listView1.GetItemAt(e.X,e.Y);
                if (lv != null)
                {
                    Process.Start(lv.Text);
                }
            }        private void listView1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control && e.KeyCode == Keys.C)
                {
                    MessageBox.Show("Copy");
                }
            }    }
    }我在listview双击打开一个文件时,同时也会产生一个keydown事件,为什么会这样的?请高手指点,谢谢