2016-11-28 10 views
1

私はC#WinFormsプログラムを使用してSQLサーバーにアクセスし、そこからデータを照会しています。私は2つのメインクラスを持っています:Usersは、アプリケーションにログインできるユーザーのデータ型を含み、Productsにはクエリ可能な製品のデータ型が再び含まれています。また、私は、SQL Serverにアクセスするためのメソッドを保持するクラスがあります。私はListView lsv_MangageUsersにロードするリストにSQLデータベースからユーザーをクエリする関数を作成しました。新しいユーザーの追加と削除方法を作成することができましたが、ユーザー変更メソッドの作成を開始したときに問題が発生しました。 Visual Studioのコメント:C# 'System.Windows.Forms.ListViewItem'を 'my app.Users'クラスに変換できません

"タイプ 'System.Windows.Forms.ListViewItem'を 'my app.Users'クラスに変換できません。

Usersクラスのメソッドを変更してメソッドを変更し、新しいフォームコントロールにロードして、ユーザーが変更できるようにしました。メソッドと関数を間違った順序で使用した場合、私はC#でまだ新しいです。どんな助けもありがとう。

変更ユーザーメソッドを実行している

ボタンのコード:

private void btn_ModifyUser_Click(object sender, EventArgs e) 
{ 
    if (lsv_ManageUsers.FocusedItem.Index != -1) 
    { 
     UserNew userwindow = new UserNew((Users)lsv_ManageUsers.SelectedItems[0]); 
     if (userwindow.ShowDialog() == DialogResult.OK) 
     { 
      LsvUsersRefresh(); 
      toolStripStatusLabel1.Text = "User successfully modified!"; 
     } 
    } 
} 
+0

すべては 'lsv_ManageUsers'を中心にしていますので、その変数が初期化されているコードを含めてください。同時に、不必要なコードを減らしてください。 'class UserNew'のほとんどの内容は質問には関係ありません。それを短くしておくことで、私たち全員が実際の問題に集中することができます。 –

+1

データの保存に関連するコードの残りの部分を削除しましたが、例外とは関係ありません。例外はここで '(Users)lsv_ManageUsers.SelectedItems [0]'をスローします。 'ListViewItem'は' Users'クラスに変換できません。そのユーザオブジェクトが、 'ListView'を塗りつぶすときにアイテムの' Tag'プロパティに置く必要がある場合。 '(Users)(lsv_ManageUsers.SelectedItems [0] .Tag)' –

+0

'DataGridView'を使うと' DataSource'を 'List 'に設定するだけで、 DataBoundItem'は行の後ろにあるデータバインドされた項目です。 –

答えて

0

lsv_ManageUsers.SelectedItems[0]によって参照される項目は、それはあなたのUsers項目の一つではない、のListViewItemで、あなただけの別のからキャストすることはできません彼らは全く違ったものだからです。

世界がこのように動作するようにしたい場合は、それぞれListViewItemにはTagのプロパティがあり、気に入った目的に自由に使用できます。リストにListViewItemを追加したときにUsersアイテムをこのプロパティに追加することをお勧めします。その後、クリックハンドラ内で逆参照できます。

+0

ListViewItemタグプロパティを正しく設定するにはどうすればよいですか?私は次のように設定しました:-'Users something =(Users)lsv_ManageUsers.SelectedItems [0] .Tag;そして@Reza Aghaeiとして参照されているのは、ボタンクリックハンドラのコメントの中で述べられています: '(Users)lsv_ManageUsers.SelectedItems [0] .Tag; 'それは正常に構築されますが、私の変更変数にはオブジェクトがありません。 –

+0

ListViewItemを作成するときに、ListViewItemをリストに表示する必要がある場合は、参照する項目を参照するために作成したアイテムのTagプロパティを設定する必要があります。 – LordWilmore

+0

最終的に解決するあなたの指示に問題があります。ありがとうございました! –

関連する問題