Servus allerseits! <br>
Ich habe ein kleines Problem:
Ich habe ein Listview, dem, sofern er Elemente enthält ein Kontextmenü zugeordnet wird.
Der Gag soll aber sein, das wenn man im ListView (ist im Modus der Detailansicht) in den leeren Bereich klickt, ein Großteil der Menüoptionen deaktiviert sein soll.
Nur wenn man auf einen der Einträge, also auf eines der ListViews Items klickt, dann sollen alle Einträge des Menps wählbar sein.
So, das Knotextmneü zuordnen ist ja kein Problem.
Wenn nich nun das MouseDown Event abfange und mir vom Sender, dem Listview, das aktuell selektierte Element (ListView.SelectedItems[0]) = geben lasse, bekomme ich aber immer das letze.
Als würde es erst NACH dem Rechtsklick selektiert, und nicht wie beim Linksklick sofort.
So sieht der Code aus:
Code:
private void lstVw_Designs_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
string test = "";
if (e.Button == MouseButtons.Right)
{
if (this.lstVw_Designs.SelectedItems.Count > 0)
{
test =this.lstVw_Designs.SelectedItems[0].Text;
MessageBox.Show(test);
}
if (this.lstVw_Designs.SelectedItems.Count > 0)
{
test = (sender as ListView).SelectedItems[0].Text;
MessageBox.Show(test);
}
}
}
Hierbei ist es egal welche der beiden if-Anweisungen man nimmt, beide liefern das gleiche. Nicht das aktuelle selektierte, sondern das vorherige (bei der ersten Auswahl also keines.)
Ist die einzige Möglichkeit das aktuell selektierte zu bekommen, das ich mir die Pixelkoordinaten geben lasse und berechne in welchem Element ich bin?
Ich habe ein kleines Problem:
Ich habe ein Listview, dem, sofern er Elemente enthält ein Kontextmenü zugeordnet wird.
Der Gag soll aber sein, das wenn man im ListView (ist im Modus der Detailansicht) in den leeren Bereich klickt, ein Großteil der Menüoptionen deaktiviert sein soll.
Nur wenn man auf einen der Einträge, also auf eines der ListViews Items klickt, dann sollen alle Einträge des Menps wählbar sein.
So, das Knotextmneü zuordnen ist ja kein Problem.
Wenn nich nun das MouseDown Event abfange und mir vom Sender, dem Listview, das aktuell selektierte Element (ListView.SelectedItems[0]) = geben lasse, bekomme ich aber immer das letze.
Als würde es erst NACH dem Rechtsklick selektiert, und nicht wie beim Linksklick sofort.
So sieht der Code aus:
Code:
private void lstVw_Designs_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
string test = "";
if (e.Button == MouseButtons.Right)
{
if (this.lstVw_Designs.SelectedItems.Count > 0)
{
test =this.lstVw_Designs.SelectedItems[0].Text;
MessageBox.Show(test);
}
if (this.lstVw_Designs.SelectedItems.Count > 0)
{
test = (sender as ListView).SelectedItems[0].Text;
MessageBox.Show(test);
}
}
}
Hierbei ist es egal welche der beiden if-Anweisungen man nimmt, beide liefern das gleiche. Nicht das aktuelle selektierte, sondern das vorherige (bei der ersten Auswahl also keines.)
Ist die einzige Möglichkeit das aktuell selektierte zu bekommen, das ich mir die Pixelkoordinaten geben lasse und berechne in welchem Element ich bin?
Comment