2

画像の描画などを試しているだけですが、私のコードはフォームの読み込みイベントでしか機能しないようです。

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;

namespace Interface_Editing_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //This works perfectly
            /*Image i = Image.FromFile(@"C:\Users\Simon\Pictures\clickedbutton.jpg");
            Bitmap b = (Bitmap)panel1.BackgroundImage;

            using (Graphics g = Graphics.FromImage(b))
            {
                g.DrawImage(i, 0, 0, i.Size.Width, i.Size.Height);
            }*/
        }

        private void panel1_Click(object sender, EventArgs e)
        {
            //Doesnt draw anything, but will show the message box
            Image i = Image.FromFile(@"C:\Users\Simon\Pictures\clickedbutton.jpg");
            Bitmap b = (Bitmap)panel1.BackgroundImage;

            using (Graphics g = Graphics.FromImage(b))
            {
                //MessageBox.Show(" ");
                g.DrawImage(i, 0, 0, i.Size.Width, i.Size.Height);
            }
        }
    }
}

私が見落としているのは単純なことである可能性が高いことはわかっていますが、何が起こっているのかについて誰かが私に洞察を与えることができれば幸いです. ありがとう

4

2 に答える 2

1

これは、パネル内のコントロールが異なるため、パネル内でのクリック イベントの処理に関連する問題のようです。

アプリケーションが panel1_click イベントを処理することを確認してください。(デバッガーを介して、それを知るようになるかもしれません)。

パネル上のさまざまなコントロールの存在など、さまざまな理由により、アプリケーションはこのイベントを処理できない場合があります。

あなたと同じ問題を抱えている次の質問を参照できます。

パネル イベントが C# で機能しない

C# でパネル内の任意の場所でクリック イベントを処理する

この実用的な例はあなたを導くかもしれません:

private Bitmap _bmp = new Bitmap(250, 250);

public Form1()
{
  InitializeComponent();   

  panel1.Click += new MouseEventHandler(panel1_Click);
  panel1.Paint += new PaintEventHandler(panel1_Paint);

  using (Graphics g = Graphics.FromImage(_bmp))
    g.Clear(SystemColors.Window);
}

private void panel1_Paint(object sender, PaintEventArgs e)
{
  e.Graphics.DrawImage(_bmp, new Point(0, 0));

}

private void panel1_Click(object sender, MouseEventArgs e)
{
  using (Graphics g = Graphics.FromImage(_bmp))
  {
    g.DrawString("Mouse Clicked Here!", panel1.Font, Brushes.Black, e.Location);
  }
  panel1.Invalidate();
}
于 2013-06-05T09:16:09.950 に答える