Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst]DataGridView und Kontextmenü + Icon
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

[gelöst]DataGridView und Kontextmenü + Icon

beantworten | zitieren | melden

Hallo zusammen,

ich habe ein DGV mit einem Kontextmenü (siehe Anhang rechtsklick_icon.jpg)
Dies habe ich mit folgendem Code realisiert:

namespace Arbeitsvorrat
{
    public partial class Arbeitsmaske : Form
    {
        public string menue_text_1 ="Projekt löschen";
        public string menue_text_2 ="Bemerkung anhängen";
        public string menue_text_3 ="Projektordner öffnen";

        public void kontextmenue_dgv(object sender, MouseEventArgs e)
        {
            ContextMenu m = new ContextMenu();
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_1, new EventHandler(menueItem_1_Click)));
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_2, new EventHandler(menueItem_2_Click)));
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_3, new EventHandler(menueItem_3_Click)));

            int currentMouseOverRow = dGvexcel.HitTest(e.X, e.Y).RowIndex;
                        
            m.Show(dGvexcel, new System.Drawing.Point(e.X, e.Y));

        }

        //Funktion Menüpunkt 1  --> Projekt löschen
        private void menueItem_1_Click(Object Sender, EventArgs e)
        {

            //Benutzerfrage ob löschen oder nicht
            DialogResult AbfrageDGV = MessageBox.Show("Wollen Sie das ausgewählte \nProjekt:\t\t" + dgv_projektnummer_ausles + "\nProjektleiter:\t" + dgv_projektleiter_ausles + "\nwirklich löschen?\n", "Projekt löschen", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (AbfrageDGV == DialogResult.Yes)
            {
                if (verbindung_zu_definitionen.getUsername() == dgv_projektleiter_ausles.ToString() || eingabe_kontrolle.get_check_admin() == true)
                {
                    //Abfrage ob bereits Konstrukteur drin steht.

Die Funktion "kontextmenue_dgv" rufe ich aus meiner Rechtsklick abfrage auf:

           
 private void dGvexcel_MouseDown(object sender, MouseEventArgs e)
        {
 if (e.Button == MouseButtons.Right)
            {
                kontextmenue_dgv(sender, e);
            }//Ende RechtsKlick

Das funktioniert wie ich mir es vorstelle,
nun wollte ich fragen, ob es geht Icons einzufügen, an die Stelle, die im Screenshoot schwarz markiert sind?
Beispiel beim Projekt löschen ein rotes X
Welches Format müssen diese Icons haben?
Wo müssen diese gespeichert sein?

Danke im Voraus.

Gruß
Attachments
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1723
Herkunft: NRW/DE

beantworten | zitieren | melden

Schon, indem du ToolStripItem dafür verwendest, e.g.

        var menu = new ContextMenuStrip();
        var item = new ToolStripItem("bla");
        item.Image = Bitmap.FromFile("c:\\bla.bmp"); // or e.g. Properties.Resources.Example;
        menu.Items.Add(item);
...

Edit: Code aus dem Kopf getippt, keine Garantie für Lauffähigkeit ;)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von vbprogger am .
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

beantworten | zitieren | melden

ha perfekt, scheint zu funktionieren :)
Danke.

Wenn ich mein Projekt freigebe, in welche Ordner speicher ich die Bilder, dass die mit freigegeben werden?

So habe ich es voll umgesetzt:

  public partial class Arbeitsmaske : Form
    {
        public string menue_text_1 ="Projekt löschen";
        public string menue_text_2 ="Bemerkung anhängen";
        public string menue_text_3 ="Projektordner öffnen";

        Image kon_bild_1 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\loeschen.bmp");
        Image kon_bild_2 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\notiz.bmp");
        Image kon_bild_3 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\ordner.bmp");

        public void kontextmenue_dgv(object sender, MouseEventArgs e)
        {
            kontext_menu.Items.Clear();

            ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem(menue_text_1, kon_bild_1, menueItem_1_Click);
            ToolStripMenuItem toolStripItem2 = new ToolStripMenuItem(menue_text_2, kon_bild_2, menueItem_2_Click);
            ToolStripMenuItem toolStripItem3 = new ToolStripMenuItem(menue_text_3, kon_bild_3, menueItem_3_Click);

            kontext_menu.Items.Add(toolStripItem1);
            kontext_menu.Items.Add(toolStripItem2);
            kontext_menu.Items.Add(toolStripItem3);

            int currentMouseOverRow = dGvexcel.HitTest(e.X, e.Y).RowIndex;
            kontext_menu.Show(dGvexcel, new System.Drawing.Point(e.X, e.Y));
        }
private Nachricht | Beiträge des Benutzers
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

beantworten | zitieren | melden

ok hab es :)

habe die Bilder in die Ressourcen eingebunden und mit:

        Image kon_bild_1 = Arbeitsvorrat.Properties.Resources.loeschen;
        Image kon_bild_2 = Arbeitsvorrat.Properties.Resources.notiz;
        Image kon_bild_3 = Arbeitsvorrat.Properties.Resources.ordner;

zugewiesen.

Gruß
private Nachricht | Beiträge des Benutzers