日期:2014-05-17  浏览次数:20803 次

实现单击左右光标实现图片的上一幅和下一副的功能
给位:
  
  我在picture中显示图片,想实现在picture控件里单击左右光标键时实现图片的上一幅和下一幅切换的功能。
没有找到与这功能配匹的触发事件。
  若有前辈知晓这个功能的实现,恳请交流。

------解决方案--------------------
增加 pic 所在窗体的 KeyDown事件
------解决方案--------------------
C# code
private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Right)
            {
                if (ImgCount == imageList1.Images.Count - 1)
                    ImgCount = 0;
                else
                    ImgCount++;
            }
            else if (e.KeyCode == Keys.Left)
            {
                if (ImgCount == 0)
                    ImgCount = imageList1.Images.Count - 1;
                else
                    ImgCount--;
            }
            pictureBox1.Image = imageList1.Images[ImgCount];
        }

------解决方案--------------------
探讨
引用:
引用:

增加 pic 所在窗体的 KeyDown事件



但是,picturebox中没有这个事件 。而且是光标的左右移动,不是鼠标的左右移动。
我是VS2010.

我说增加 pic 所在的 窗体的 事件, 不是pic他自身的事件, 我就怕你看不懂我说的,连代码都贴出来了..还看不懂?

------解决方案--------------------
还好,就按我说的办法干吧。
通过pic的MouseDown()事件设置:pic.Focus();
通过重写ProcessDialogKey(),可以判断pic的焦点问题。
protected override bool ProcessDialogKey(Keys keyData)
{
if (pictureBox1.Focused)
{
switch (keyData)
{
case Keys.Left:
MessageBox.Show("这里放置左移图片的方法");
break;
case Keys.Right:
MessageBox.Show("这里放置右移图片的方法");
break;
}
// 如果焦点在pictureBox上则不调用base.ProcessDialogKey(keyData)
return true;
}
return base.ProcessDialogKey(keyData);
}