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

想用C#实现以下功能,大家帮忙指点指点
C#语言,Visual studio2010环境编辑。

想要实现的目标:我自定义一个控件,用户点击我的控件之后,就会在绘图板上显示一个图形,该图形是可以通过鼠标选中后进行拖拽的。类似于matlab的simulink功能,可以实现拖拽,也可以理解为visio绘图,但是不需要调整图形的大小。

问题1:如何实现点中控件后系统自动生成一个显示的图形?这个图形最好要占用很小的空间和内存,所以最好不要用图片,能不能用其他的代替?

问题2:实现拖拽功能的鼠标点击操作命令该如何去写?就是鼠标点击图形后,相应图形跟随移动,鼠标再次点击时,图片停止移动。

问题3:我现在学习的一些书本上的程序是基于studio2008编写的,但是这些程序我改写到2010中就会出现错误,如果直接打开2008版本的解决方案,2010会对其进行改写和备份,改写后的程序完全可以进行调试,不会出现问题,但是为什么直接用2010写的时候就会出现错误呢?
以下给出一个例子,大家帮忙分析分析。
例子是实现鼠标拖拽图形的功能,当鼠标在picturebox范围内时,就会把图形跟随鼠标移动。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Ex04_14
{
    public partial class Form1 : Form
    {
        bool flag = false;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            flag = false;
            pictureBox1.Location = new System.Drawing.Point(14, 8);
            openFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
            openFileDialog1.ShowDialog();
            Image myImage = System.Drawing.Image.FromFile(openFileDialog1.FileName);
            pictureBox1.Image = myImage;
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (flag)
                pictureBox1.Location = new System.Drawing.Point(e.X, e.Y);
        }

        private void pictureBox1_MouseEnter(object sender, EventArgs e)
        {
            flag = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

在2010中直接编写就会出现以下问题:


错误 1 “Ex04_14.Form1”不包含“openFileDialog1_FileOk”的定义,并且找不到可接受类型为“Ex04_14.Form1”的第一个参数的扩展方法“openFileDialog1_FileOk”(是否缺少 using 指令或程序集引用?) E:\00计算机语言学习\C#\Test\Ex04_14\Ex04_14\Form1.Designer.cs 57 94 Ex04_14