2013-03-28 103 views
0

我在應用程序中創建了一個方法,該方法在運行時創建了多個面板。在創建面板的循環中,我創建了一個面板MouseMove事件,該事件根據創建的任意一個面板中鼠標指針的位置來控制工具提示的位置。該名稱在當前上下文中不存在

我收到這個錯誤,當我編譯時,我明白pnlOverview是在不同的構造函數中創建的,但對於我的生活,我無法理解如何從事件處理函數內到達pnlOverview實例。

任何人都可以指向正確的方向嗎?

這裏只是我認爲你需要看看代碼:

public void CreatePanels() 
    { 
     int PanelPosX = 50; 
     int PanelPosY = 500; 
     int LabelPosX = 10; 
     int LabelPosY = 10; 

     for (int i = 0; i < (Convert.ToInt32(txtNoOfPanels.Text)); i++) 
     { 
      // Create a new panel, each with a unique label identifying the inspector 

      Panel pnlOverview = new Panel(); 
      pnlOverview.Name = "InspectorPanel" + (i + 1).ToString(); 
      pnlOverview.Text = "Inspector Panel " + (i+1).ToString(); 
      pnlOverview.Location = new Point(PanelPosX, PanelPosY); 
      pnlOverview.Size = new Size(1200, 180); 
      pnlOverview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
      Controls.Add(pnlOverview); 
      pnlOverview.Paint += new PaintEventHandler(newPanelPaint); 

      // Create a MouseMove event for each panel created 
      pnlOverview.MouseMove += new MouseEventHandler(pnlOverview_OnMouseMove); 

      Label lblInspectorName = new Label(); 
      lblInspectorName.Name = "InspectorName" + (i+1).ToString(); 
      lblInspectorName.Text = " Inspector " + (i+1).ToString(); 
      lblInspectorName.Width = 100; 
      lblInspectorName.Height = 13; 
      lblInspectorName.Location = new Point(LabelPosX, LabelPosY); 
      lblInspectorName.Size = new Size(82, 13); 
      pnlOverview.Controls.Add(lblInspectorName); 

      PanelPosY += 190; 
     } 
     return; 
    } 

    // Show a tooltip 
    public void pnlOverview_OnMouseMove(object sender, MouseEventArgs e) 
    { 
     toolTip1.Show("HELLO", this, new Point(pnlOverview.Left + e.X + 1, pnlOverview.Top + e.Y + 1), int.MaxValue); 
    } 
+1

哪種語言/哪種編譯器? –

+0

@Dan Pichelman:這是C#。但是,您使用的是什麼版本的Visual Studio? – izogfif

+0

看起來像C#給我,但這顯然是一個假設。如果這是真的,我會建議使用FlowLayoutPanel而不是嘗試手動定位元素。 –

回答

1

pnlOverview不會在你的MouseMove處理程序的範圍,因爲它是在CreatePanels()的局部變量。

sender應該是您正在mousemoving結束的控件,但您需要將其轉換爲適當的類型。

+0

謝謝大家。花了點運氣,但我已經得到它的工作。 –

+0

這裏沒有人想要真正說出如何聲明一個控件,以便可以在另一個事件中訪問它? –

相關問題