GDI学习(6) 拖放方式打开图片

 

c#实现拖放。一般要用到DragDrapDragEnter事件和DoDragDrop方法。为了能够完成拖放,一定设置目标控件的AllowDrop属性为true

 

1DoDragDrop方法启动拖放操作

txtFileName.DoDragDrop(txtFileName.Text, DragDropEffects.Copy|DragDropEffects.Move);

2DragEnter事件

当拖动对象进入目标控件时触发。

3DragDrop事件

放下拖放内容时触发。

在任何的事件中都可以调用此方法,一般是放在源控件的MouseDown事件中触发。

下面的代码,首先用OpenFileDialog选择一个jpg文件,设置文本框txtFileNameText属性为该文件的路径。在txtFileNameMouseDown事件中启动拖放操作,拖放数据为图片的路径数据(string类型)。处理picturebox1DragEnter事件,以显示拖放效果,处理DragDrop事件,根据拖动的文本信息加载图片到picturebox框。

这里要特别注意的事情是在vs集成开发环境中pictureboxAllowDrop属性无法被智能感知,但它确实是存在的,在Formload事件直接录入就好了。

      关键代码:      
ContractedBlock.gif ExpandedBlockStart.gif Code
    private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opd 
= new OpenFileDialog();
            opd.Filter 
= "JPEG|*.jpg";
            opd.ShowDialog();
          
this.txtFileName.Text = opd.FileName;
        }

        
private void Form3_Load(object sender, EventArgs e)
        {
            
this.pictureBox1.AllowDrop = true;
            
        }

        
private void txtFileName_MouseDown(object sender, MouseEventArgs e)
        {
            
//txtFileName.AllowDrop = true;
            txtFileName.DoDragDrop(txtFileName.Text, DragDropEffects.Copy|DragDropEffects.Move);
        }
        
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
        {
            
if (e.Data.GetDataPresent(DataFormats.Text))
            {
                e.Effect 
= DragDropEffects.Copy;
            }
            
else
            {
                e.Effect 
= DragDropEffects.None;
            }
        }

        
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
        {
            Bitmap bits 
= (Bitmap)Bitmap.FromFile(e.Data.GetData(DataFormats.Text).ToString());
            pictureBox1.Image 
= bits;
        }

转载于:https://www.cnblogs.com/webtrados/archive/2009/07/22/1528925.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值