【问题标题】:how to open a new window with double click on control added at runtime C#?如何通过双击在运行时 C# 中添加的控件打开一个新窗口?
【发布时间】:2014-12-22 05:30:58
【问题描述】:

我正在我的应用程序中在运行时添加一个可移动的 PictureBox 控件,如下面的代码所示。我希望当我双击运行时添加的 PictureBox 控件时,会打开一个新窗口。我试图添加一个双击事件,但它不起作用。您能否指导我在运行时双击添加的 PictureBox 控件时如何打开一个新窗口?

PictureBox[] PicArray;
PictureBox pb = new PictureBox();

pb.BackgroundImage = Image.FromFile(@"C:\Esp_Calculator\ESP Planner\1206570458690641104johnny_automatic_bridge.svg.med.png");
pb.Location = new Point(0, 0);
pb.BackColor = Color.Transparent;
pb.BackgroundImageLayout = ImageLayout.Zoom;

pb.MouseDown += new MouseEventHandler(this.drawArea_MouseDown);
pb.MouseMove += new MouseEventHandler(this.drawArea_MouseMove);
pb.MouseDoubleClick += pb_MouseDoubleClick;

drawArea.Controls.Add(pb);

List<PictureBox> lblList = new List<PictureBox>();

foreach (Control d in Controls)
    if (d is PictureBox)
        lblList.Add((PictureBox)d);

        PicArray = lblList.ToArray();

private void drawArea_MouseDown(object sender, MouseEventArgs e)
{
  move = e.Location;
}

private void drawArea_MouseMove(object sender, MouseEventArgs e)
{
    Control Pb = (Control)sender;
    if ((Control.ModifierKeys & Keys.Control) != 0)
    {
        if ((Control.MouseButtons & MouseButtons.Left) != 0)
        {
            Pb.Left += e.X - move.X;
            Pb.Top += e.Y - move.Y;
        }
    }
 }

void pb_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
    Editor ed = new Editor();
    ed.Show();  
}

【问题讨论】:

  • 我在 sn-p 中看不到您处理双击事件的位置。你忘记发什么了吗?
  • 不是 pb.OnDoubleClick 工作吗? :O
  • 我已经添加了整个 sn-ps。已编辑。不,它不工作
  • 你必须为双击添加事件监听器。你可以做类似pb.DoubleClick += doubleClickFuncationName
  • 谢谢。双击而不是 MouseDoubleClick 可以解决问题。

标签: c# winforms


【解决方案1】:

我明白了。 DoubleClick 代替了 MouseDoubleClick 事件。谢谢 。这是答案和工作代码:

     PictureBox[] PicArray;
PictureBox pb = new PictureBox();

        pb.BackgroundImage = Image.FromFile(@"C:\Esp_Calculator\ESP Planner\1206570458690641104johnny_automatic_bridge.svg.med.png");
        pb.Location = new Point(0, 0);
        pb.BackColor = Color.Transparent;
        pb.BackgroundImageLayout = ImageLayout.Zoom;





        pb.MouseDown += new MouseEventHandler(this.drawArea_MouseDown);
        pb.MouseMove += new MouseEventHandler(this.drawArea_MouseMove);
        pb.DoubleClick += pb_DoubleClick;

        drawArea.Controls.Add(pb);

        List<PictureBox> lblList = new List<PictureBox>();
        foreach (Control d in Controls)
            if (d is PictureBox)
                lblList.Add((PictureBox)d);
        PicArray = lblList.ToArray();

      private void drawArea_MouseDown(object sender, MouseEventArgs e)
      {
       move = e.Location;
       }
     private void drawArea_MouseMove(object sender, MouseEventArgs e)
     {
    Control Pb = (Control)sender;
    if ((Control.ModifierKeys & Keys.Control) != 0)
    {

        if ((Control.MouseButtons & MouseButtons.Left) != 0)
        {
            Pb.Left += e.X - move.X;
            Pb.Top += e.Y - move.Y;


        }
    }
 }

 void pb_DoubleClick(object sender, System.EventArgs e)
    {
        Editor ed = new Editor();
        ed.Show();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多