Laden...

[gelöst]DataGridView und Kontextmenü + Icon

Erstellt von Edzio vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.868 Views
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren
[gelöst]DataGridView und Kontextmenü + Icon

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ß

1.696 Beiträge seit 2006
vor 9 Jahren

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 😉

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren

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));
        }
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren

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ß