2010-11-19 30 views
1

mon programme a une boîte à image, et je veux, après un clic de souris, ou sur le choix de ContextMenuStrip, faire quelque chose apparaître au même endroit du clic.Comment ajouter une étiquette apon souris cliquez sur le même endroit dans C#?

comme on le voit dans l'image, je voudrais ajouter une sorte d'une note sur la zone de la date cliquées spécifique (probablement ajouter un contrôle utilisateur)

Comment puis-je aller à elle? comment puis-je envoyer le clic coïncide (x, y) et faire apparaître quelque chose à ces mêmes coordonnées?

Merci!

alt text

+0

Peut-être une info-bulle est un meilleur choix ... – munissor

+0

ce que je veux basiquement faire est de faire une note (comme une note de todo) coller à la même date. (coller et rester) pouvez-vous élaborer comment dois-je utiliser une info-bulle pour cela? – RanH

Répondre

1

Je voudrais créer une classe qui fournirait des éléments de menu et de capturer les coordonnées x, y pour les avoir prêts lorsque l'élément est cliqué. Ou vous pouvez capturer ces coordonnées dans un délégué anonyme.

Quelque chose comme ceci:

public Form1() 
{ 
    InitializeComponent(); 
    MouseClick += new MouseEventHandler(Form1_MouseClick); 
} 

private void Form1_MouseClick (object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     ContextMenuStrip ctxMenu = new ContextMenuStrip(); 

     // following line creates an anonymous delegate 
     // and captures the "e" MouseEventArgs from 
     // this method 
     ctxMenu.Items.Add(new ToolStripMenuItem(
      "Insert info", null, (s, args) => InsertInfoPoint(e.Location))); 

     ctxMenu.Show(this, e.Location); 
    } 
} 

private void InsertInfoPoint(Point location) 
{ 
    // insert actual "info point" 
    Label lbl = new Label() 
    { 
     Text = "new label", 
     BorderStyle = BorderStyle.FixedSingle, 
     Left = location.X, Top = location.Y 
    }; 
    this.Controls.Add(lbl); 
} 
0

vous pouvez utiliser infobulle ou utiliser événement MouseMove. Cet événement vous fournira la position xy actuelle de la souris, puis vous pouvez afficher votre contenu soit par vrai/faux visible à cet endroit ou prendre une étiquette et définir son texte et ensuite définir sa position xy selon xy de la souris. puis sur l'événement mouseleave déplacer cette étiquette à hors écran ou masquer

1

Un exemple de code pour vos besoins, Dans mon code ci-dessous j'ajoute le contrôle de bouton clic de souris. Vous pouvez modifier le code selon vos besoins.

int xValue=0, yValue=0; 
    private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     xValue = e.X; 
     yValue = e.Y; 
     Button btn = new Button(); 
     btn.Name = "Sample Button"; 
     this.Controls.Add(btn); 
     btn.Location = new Point(xValue, yValue); 
    }