myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Datagrid view - Kontext Menü
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Datagrid view - Kontext Menü

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
LastGentleman LastGentleman ist männlich
myCSharp.de-Mitglied

avatar-1696.jpg


Dabei seit: 13.03.2005
Beiträge: 1.274
Entwicklungsumgebung: VS 2012 Pro, MS Access
Herkunft: Österreich


LastGentleman ist offline

Datagrid view - Kontext Menü

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich möchte gerne in ein DataGridView ein Kontext Menü einfügen, das geht auch soweit nur wie stelle ich fest wo er steht.

Gibt es da einen Eigenschaft in GridView. Wenn ich aber irgendwo mit der rechte Maustaste hinklicke dann ändert er nicht den "Gird-Coursor".
Neuer Beitrag 16.08.2006 16:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ParadoX
myCSharp.de-Mitglied

Dabei seit: 23.08.2006
Beiträge: 4


ParadoX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe das gleiche Problem ... und mich interessiert die Antwort auch !
Neuer Beitrag 23.08.2006 15:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Noodles
myCSharp.de-Poweruser/ Experte

Dabei seit: 08.02.2004
Beiträge: 4.644
Herkunft: Leipzig


Noodles ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

C#-Code:
private void dataGridView_MouseUp(object sender, MouseEventArgs e)
{
    DataGridView.HitTestInfo hti = dataGridView.HitTest(e.X, e.Y);
    if (hti.Type == DataGridViewHitTestType.Cell)
        dataGridView[hti.ColumnIndex, hti.RowIndex].Style.BackColor = Color.Red;
}
Neuer Beitrag 23.08.2006 16:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ParadoX
myCSharp.de-Mitglied

Dabei seit: 23.08.2006
Beiträge: 4


ParadoX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hmm ich meinte eher ein Kontext Menü zu öffnen, wenn man mit dem rechtsklick auf eine Zelle klikt.

Ich Bin jetzt soweit:

C#-Code:
Private void myDataGridView_CellContentClick(object sender, DataGridViewMouseEventArgs e)
{
    if(e.Button == MouseButtons.Right)
    {
          MessageBox.show("RechtsKlick !");
    }

}

Jetzt will ich an der MessageBox stelle ein KontextMenü öffnen, das relativ zum inhalt der zelle ist.
Ich habe zB ein DatagridView, und in der ersten Spalte sind Dateien gelistet. Wenn ich jetzt ein Rechtsklick auf eine datei-zelle mache, will ich ein Kontext menü mit "Eigenschaften" haben (zB)

Bin ich da auf den richtigen Weg ?
Danke !
Neuer Beitrag 23.08.2006 16:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Noodles
myCSharp.de-Poweruser/ Experte

Dabei seit: 08.02.2004
Beiträge: 4.644
Herkunft: Leipzig


Noodles ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das DataGridView hat die Eigenschaft ContextMenuStrip. Der Rest geht über HitTestInfo.
Neuer Beitrag 23.08.2006 16:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ParadoX
myCSharp.de-Mitglied

Dabei seit: 23.08.2006
Beiträge: 4


ParadoX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hm ich bringe das nicht zum laufen unglücklich

Brauche ich dennoch den dataGridView_CellContentClick benutzen ?

Ich will nur ein Kontextmenü erscheinen lassen, wenn ich ein rechtsklik in irgend eine Zelle der ersten Spalte mache. Und in dem Menü ist ein "Einstellung" button, der mir, wenn angeklikt, zB den Inhalt der geklikten Zelle anzeigt.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ParadoX am 24.08.2006 10:03.

Neuer Beitrag 24.08.2006 09:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FaktorX2001 FaktorX2001 ist männlich
myCSharp.de-Mitglied

Dabei seit: 31.08.2006
Beiträge: 2
Entwicklungsumgebung: Visual Studio 2005 Pro
Herkunft: Attendorn


FaktorX2001 ist offline Füge FaktorX2001 Deiner Kontaktliste hinzu MSN-Passport-Profil von FaktorX2001 anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also wenn ich das jetzt richtig verstehe, willst du ein Kontextmenü öffnen, wenn du auf eine bestimmte Zelle rechts klickst und bestimmte Funktionen aufrufen willst, die die INfos der Zelle benötigen.

Dafür solltest du das DataGridView.CellContextMenuStripNeeded-Ereignis benutzen. Und zwar in der Column in der du die jeweiligen Kontextmenü anzeigen willst, wenn du auf eine Zelle rechts klickst.

In dem Event kannst du dann dein ContextMenu aufrufen samt der jeweiligen Zelleninhalte die du für z.B. "Eigenschaften" brauchst

hier der link zur MSDN  Ereignis CellContextMenuStripNeeded
Neuer Beitrag 31.08.2006 12:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ParadoX
myCSharp.de-Mitglied

Dabei seit: 23.08.2006
Beiträge: 4


ParadoX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

Danke für den Tipp, ich habe inzwischen das Problem so gelöst:
"fenetre" ist mein DataGridView,

C#-Code:
// Rechtsklick Menü Definition
        private ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem();

        // Rechtsklick Menü Adden
        private void AddContextMenu()
        {
            toolStripItem1.Click += new EventHandler(toolStripItem1_Click);
            ContextMenuStrip strip = new ContextMenuStrip();
            strip.Opening += new CancelEventHandler(OuvrirStrip);
            fenetre.Columns[0].ContextMenuStrip = strip;
            fenetre.Columns[0].ContextMenuStrip.Items.Add(toolStripItem1);
        }

        // Rechtsklick Menü öffnen
        void OuvrirStrip(object sender, CancelEventArgs e)
        {
            int IndexLigne = fenetre.CurrentCellAddress.Y;
            object SringCellule = fenetre.Rows[IndexLigne].Cells[0].Value as string;
            fenetre.Columns[0].ContextMenuStrip.Items[0].Text = "Einstellungen";
        }

        // Rechtsklick Menü Klick
        private void toolStripItem1_Click(object sender, EventArgs args)
        {
            bool isOk = true;
            foreach (DataGridViewCell myCell in fenetre.SelectedCells)
            {
                if (myCell.ColumnIndex != 0)
                    isOk = false;
            }
            if (isOk)
            {
                DataGridViewSelectedCellCollection selection = fenetre.SelectedCells;
                einstellungsForm einstellungen = new einstellungsForm(selection, this);
                einstellungen.Show();
            }
            else
            {
                MessageBox.Show("Ungültige Auswahl !", "Warnung");
            }
        }

        // KontextMenu beim Load adden
        private void mainForm_Load(object sender, EventArgs e)
        {
            AddContextMenu();
        }

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ParadoX am 31.08.2006 13:50.

Neuer Beitrag 31.08.2006 13:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
LastGentleman LastGentleman ist männlich
myCSharp.de-Mitglied

avatar-1696.jpg


Dabei seit: 13.03.2005
Beiträge: 1.274
Entwicklungsumgebung: VS 2012 Pro, MS Access
Herkunft: Österreich

Themenstarter Thema begonnen von LastGentleman

LastGentleman ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab eine einfache Idotensicher Lösung gefunden

C#-Code:
DataGridViewCellEventArgs CurrentCell ;

private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
        {
            m_CurrentCell = e;
        }

private void rückrufenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show((string)dataGridView1.Rows[m_CurrentCell.RowIndex].Cells[0].Value);
        }
Neuer Beitrag 01.09.2006 11:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 13 Jahre.
Der letzte Beitrag ist älter als 13 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 06.12.2019 21:24