您的位置:首页 > 编程语言 > C#

C#中如何实现数据拖动?(拖动图片,到TextBox,并显示)

2012-08-24 18:58 661 查看


代码:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace TestKeyPress
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
   
        private void textBox1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;
        }
        private void textBox1_DragDrop(object sender, DragEventArgs e)
        {
         //DataFormats.FileDrop确定你拖动过去的是文件回或者文件夹
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string realpath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
                //从拖动数据里得到路径
                //MessageBox.Show(realpath);测试路径
                string p = Path.GetExtension(realpath);
                //MessageBox.Show(p);测试路径
                if (p == ".jpg")
                {
                    //StreamReader sr = new StreamReader(realpath);读取方式,放弃使用
                    Image im = Image.FromFile(realpath);
                    int h = im.Height;
                    int w = im.Width;
                    this.pictureBox1.Height = h;
                    this.pictureBox1.Width = w;
                    this.pictureBox1.BackgroundImageLayout = ImageLayout.Stretch;
                    this.pictureBox1.BackgroundImage = im;
                    //将读取到的图片放到picturebox里
                    //this.pictureBox1.Location = new Point(130 - pictureBox1.Width, 85 - pictureBox1.Height);
                    Point pnl = new Point(this.panel1.Width / 2, this.panel1.Height / 2);
                    Point pic = new Point();
                    pic.X = pnl.X - pictureBox1.Width / 2;
                    pic.Y = pnl.Y - pictureBox1.Height / 2;
                    this.pictureBox1.Location = pic;
                    //上面的代码是将图片的中心和panel的中心对齐
                    //this.pictureBox1.Location = new Point(85 ,76);
                }
            }
            else
            {
                MessageBox.Show("please select jpg");
            }
            //MessageBox.Show(e.Data.GetType().ToString());
        }
        //放大功能
        private void button1_Click(object sender, EventArgs e)
        {
            Image im = this.pictureBox1.BackgroundImage;
            //im.M
            pictureBox1.Height = (int)(pictureBox1.Height * 1.2);
            pictureBox1.Width = (int)(pictureBox1.Width * 1.2);
            Point pnl = new Point(this.panel1.Width / 2, this.panel1.Height / 2);
            Point pic = new Point();
            pic.X = pnl.X - pictureBox1.Width / 2;
            pic.Y = pnl.Y - pictureBox1.Height / 2;
            this.pictureBox1.Location = pic;
        }
        //缩小功能
        private void button2_Click(object sender, EventArgs e)
        {
            Image im = this.pictureBox1.BackgroundImage;
            //im.M
            pictureBox1.Height = (int)(pictureBox1.Height * 0.85);
            pictureBox1.Width = (int)(pictureBox1.Width * 0.85);
            Point pnl = new Point(this.panel1.Width / 2, this.panel1.Height / 2);
            Point pic = new Point();
            pic.X = pnl.X - pictureBox1.Width / 2;
            pic.Y = pnl.Y - pictureBox1.Height / 2;
            this.pictureBox1.Location = pic;
        }
        private Point start;
        private Point end;
        //下面的函数实现,图片在panel里可以拖动
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                start = new Point(e.X, e.Y);
                end = start;
            }
        }
       
        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            end = new Point(e.X, e.Y);
            int picx = this.pictureBox1.Location.X;
            int picy = this.pictureBox1.Location.Y;
            picx += end.X - start.X;
            picy += end.Y - start.Y;
            this.pictureBox1.Location = new Point(picx, picy);
        }
    }
}

数据拖动,主要是在接受数据的地方添加DragEnter和DragDrop事件,必须将接受数据的地方设置为AllowDrop=true,如果在一个窗体内拖动,选择数据的地方也要设置AllowDrop=true,



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息