J'ai créé une méthode dans mon application qui crée un certain nombre de panneaux lors de l'exécution. Dans la boucle qui crée les panneaux, j'ai créé un événement MouseMove de panneau qui contrôle la position d'une info-bulle basée sur la position du pointeur de la souris dans l'un des panneaux créés. Je reçois cette erreur quand je compile, j'apprécie que pnlOverview
est une création dans un constructeur différent, mais pour la vie de moi, je ne peux pas comprendre comment je peux atteindre l'instance pnlOverview
à partir du gestionnaire d'événements.Le nom n'existe pas dans le contexte actuel
Quelqu'un peut-il me diriger dans la bonne direction?
est ici juste le code que je pense que vous devez regarder:
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);
}
Quelle langue/quel compilateur? –
@Dan Pichelman: Ceci est C#. Mais quelle version de Visual Studio utilisez-vous? – izogfif
On dirait que C# pour moi, mais c'est évidemment une supposition. Si c'est vrai, je recommande d'utiliser le FlowLayoutPanel au lieu d'essayer de positionner vos éléments manuellement. –