2016-08-06 25 views
2

Ich bin ein Versuch, einen Klick oder Doppelklick auf meine Listenansicht zu arbeiten, und meine Listview1_1 klicken scheint nicht zu funktionieren. Immer wenn ich auf einen ausgewählten Gegenstand klicke, erscheint keine Meldung. Ich habe beim Erstellen eines Klickereignisses das übliche Format verwendet, das scheint jedoch nicht zu funktionieren. Liegt es daran, dass ich die Daten aus einer Datenbank in die Listenansicht einlade, anstatt Daten, die ich innerhalb der Listenansicht erstellt habe? Vielen Dank!Klicken Sie auf die Schaltfläche auf ListView funktioniert nicht

using System; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace sundayschoolproject 
{ 
    public partial class Form1 : Form 
    { 
    string con = ("Data Source=ZTABASSUM\\SQLEXPRESS01;Initial Catalog= Sunday School;Integrated Security=True"); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     listView1.GridLines = true; 
     listView1.View = View.Details; 

     //Add Columns 
     listView1.Columns.Add("ParentName", 100); 
     listView1.Columns.Add("Address", 150); 
     listView1.Columns.Add("City", 100); 
     listView1.Columns.Add("State", 50); 
     listView1.Columns.Add("Zipcode", 100); 
     listView1.Columns.Add("Phone", 150); 


    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     string sql = ("Select * from Family"); 
     SqlConnection connection = new SqlConnection(con); 

     SqlCommand cmd = new SqlCommand(sql, connection); 

     connection.Open(); 

     SqlDataReader dr = cmd.ExecuteReader(); 

     listView1.Items.Clear(); 

     while (dr.Read()) 
     { 
      ListViewItem lv = new ListViewItem(dr.GetString(0)); 
      lv.SubItems.Add(dr.GetString(1)); 
      lv.SubItems.Add(dr.GetString(2)); 
      lv.SubItems.Add(dr.GetString(3)); 
      lv.SubItems.Add(dr.GetString(4)); 
      lv.SubItems.Add(dr.GetString(5)); 
      listView1.Items.Add(lv); 
     } 


     dr.Close(); 
     connection.Close(); 



    } 





     private void listView1_Click(object sender, MouseEventArgs e) 
    { 
     if (listView1.SelectedItems.Count > 0) 
     { 
      MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text); 
     } 
     else 
     { 
      MessageBox.Show("Please select an item"); 
     } 

    } 

} 
} 
+0

listview1_click. Ich habe versucht, zu debuggen, aber kein Fehler taucht auf! –

+0

Ja, es gibt zwei basierend auf dem, was in der if else-Anweisung ausgewählt ist. –

+0

listView1.SelectedItems.Count ist gleich Null vor dem Klicken auf –

Antwort

1

Ich denke, dass Sie auf einen der SubItems, dass ein ListViewItem hat und es passiert nichts zu klicken versuchen.

Nun, in der Lage sein eine SubItem klickbare zu machen, müssen Sie zuerst die FullRowSelect Eigenschaft des Listview Sie die volle Zeilenauswahl ermöglichen, müssen machen:

listView1.FullRowSelect = true; 

dann können Sie ListView.HitTest Methode verwenden, die gibt Sie Informationen zu einem Artikel, der sich an einem bestimmten Punkt befindet.

Sie konnten die ListView.HitTest Methode in MouseClick oder MouseDoubleClick verwenden, anstatt Click oder DoubleClick Ereignisse, weil sie eine Instanz von MouseEventArgs-Klasse bietet, dass Sie die Mausposition erhalten helfen, dass Sie es in der HitTest-Methode verwenden, wird das lokalisieren geklickt Unterpunkt, versuchen Sie dies:

private void listView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    // Get the information of an item that is located in a given point (mouse location in this case). 
    ListViewHitTestInfo hit = listView1.HitTest(e.Location); 
    // hit.Item: Gets the ListViewItem. 
    // hit.SubItem: Get the ListViewItem.ListViewSubItem 

    if (listView1.SelectedItems.Count > 0) 
    { 
     MessageBox.Show("You clicked " + hit.SubItem.Text); 
    } 
    else 
    { 
     MessageBox.Show("Please select an item"); 
    } 
} 
+0

Ich habe das versucht, aber mein Mausklick funktioniert immer noch nicht! –

+0

Sind Sie sicher, dass Ihre 'ListView' nicht deaktiviert ist? – WaelAlshabani

+0

Ich habe es herausgefunden! Ich hatte keinen Event-Handler in Form1.Designer.cs! Anfängerfehler! –

Verwandte Themen