2016-08-06 15 views
2

私はlistview1をクリックしたり、ダブルクリックしてlistview1_1のクリックが機能しないように見せています。選択したアイテムをクリックするたびに、メッセージボックスがポップアップしません。私はclickイベントを作成するのに通常のフォーマットを辿ったが、それはうまくいかない。私はリストビューの中で作成したデータの代わりに、データベースからリストビューにデータをロードしているからですか?本当にありがとう!ListViewのボタンをクリックしても表示されない

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私はデバッグを試みましたが、エラーは表示されません! –

+0

はい、そこには、else文の中で選択されているものに基づいて2つあります。 –

+0

listView1.SelectedItems.Countは0に等しいです。 –

答えて

1

私はあなたがListViewItemが持っていると何も起こりませんSubItemsのいずれかをクリックしようとしていると思います。

まあ、サブ項目クリッカブルを作ることができるように、あなたは完全な行選択を許可する必要があり、リストビューのFullRowSelect財産を作るために最初の必要があります。

listView1.FullRowSelect = true; 

、あなたが与えるListView.HitTestメソッドを使用することができます指定された地点にあるアイテムの情報。彼らはあなたが見つけるためにHitTest方法でそれを使用するマウス位置を取得するのに役立ちますMouseEventArgsクラスのインスタンスを提供するため、

あなたは、ClickまたはDoubleClickのイベントではなく、MouseClickまたはMouseDoubleClickListView.HitTest方法を使用することができますこれを試してみてください:

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

私はこれを試しましたが、私のマウスクリックはまだ動作しません! –

+0

'ListView'が無効になっていませんか? – WaelAlshabani

+0

私はそれを理解しました! Form1.Designer.csにイベントハンドラがありませんでした!ルーキーミス! –

関連する問題