-1

6つのラベルが付いたフォームがあります。そのうちの4つにはpng画像が含まれています。ユーザーが4つの画像の1つをlabel5にドラッグできるように設定しました。label6は、選択した4つの画像のどれをドラッグドロップ部分が機能しているのかを伝えるメッセージを表示しますが、どのコードを伝える必要があるのか​​わかりません。選ばれたそれら。

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

namespace Drag_Drop_Tester2
{
public partial class Form1 : Form
{
    Image img1 = Image.FromFile("Peg_Red.png");
    Image img2 = Image.FromFile("Peg_Blue.png");
    Image img3 = Image.FromFile("Peg_Green.png");
    Image img4 = Image.FromFile("Peg_Orange.png");

    public Form1()
    {
        InitializeComponent();
    }

    private void DD_MouseDown(object sender, MouseEventArgs e)
    {
        Label lblPic = (Label)sender;
        lblPic.DoDragDrop(lblPic.Image, DragDropEffects.Copy);
    }

    private void DD_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(Bitmap)))
            e.Effect = DragDropEffects.Copy;
        else
            e.Effect = DragDropEffects.None;
    }

    private void DD_DragDrop(object sender, DragEventArgs e)
    {
        Label lblPic = (Label)sender;
        Graphics g = lblPic.CreateGraphics();
        g.DrawImage((Image)e.Data.GetData(typeof(Bitmap)), new Point(0, 0));

        if ("code that goes here")
            lblMsg.Text = "You picked red";
        else
            lblMsg.Text = "I can't decide what you picked";
    }
}
}
4

2 に答える 2

0

私がそれを理解した気にしないでください:

If (sender == label1)

lblMsg.Text = "You Picked Red";

必要以上に難しくしていた

于 2012-08-26T21:49:18.140 に答える
0

投稿したものは機能しますが、画像にタグを追加することもできます。これにより、ドロップされた画像を判断するためにラベルの名前に依存しなくなります。このようなものがうまくいくかどうかを確認してください。

public partial class Form1 : Form
{
    Image img1 = Image.FromFile("Peg_Red.png");
    Image img2 = Image.FromFile("Peg_Blue.png");
    Image img3 = Image.FromFile("Peg_Green.png");
    Image img4 = Image.FromFile("Peg_Orange.png");

    public Form1()
    {
        InitializeComponent();
        img1.Tag = 1;
        img2.Tag = 2;
        img3.Tag = 3;
        img4.Tag = 4;
        label1.Image = img1;
        label2.Image = img2;
        label3.Image = img3;
        label4.Image = img4;

    }

    private void DD_MouseDown(object sender, MouseEventArgs e)
    {
        Label lblPic = (Label)sender;
        lblPic.DoDragDrop(lblPic.Image, DragDropEffects.Copy);
    }

    private void DD_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(Bitmap)))
            e.Effect = DragDropEffects.Copy;
        else
            e.Effect = DragDropEffects.None;
    }

    private void DD_DragDrop(object sender, DragEventArgs e)
    {
        Label lblPic = (Label)sender;
        Graphics g = lblPic.CreateGraphics();
        var image = (Image)e.Data.GetData(typeof(Bitmap));
        var index = (int)image.Tag;
        g.DrawImage(image, new Point(0, 0));

        switch (index)
        {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            default:
                break;
        }
        g.Dispose();
        image.Dispose();

    } 

}
于 2012-08-26T22:54:41.603 に答える