SQL 서버에 액세스하고 데이터를 쿼리하는 C# WinForms 프로그램이 있습니다. 두 가지 주요 클래스가 있습니다. 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!";
}
}
}
모두'lsv_ManageUsers'를 중심으로 회전하므로, 해당 변수가 초기화 된 코드를 포함하십시오. 동시에 불필요한 코드를 줄이십시오. 'class UserNew'의 대부분의 내용은 질문과 관련이 없습니다. 그것을 짧게 유지하면 우리 모두는 실제 문제에 집중할 수 있습니다. –
데이터를 저장하는 것과 관련된 코드의 나머지 부분을 삭제했으며 예외와 아무 관련이 없습니다. 예외는 여기에'(Users) lsv_ManageUsers.SelectedItems [0]'을 던졌습니다. 'ListViewItem'은'Users' 클래스로 변환 될 수 없습니다. 사용자 객체가 필요하다면'ListView'를 채울 때 아이템의'Tag' 속성에 넣으십시오. '(Users) (lsv_ManageUsers.SelectedItems [0] .Tag)' –
만약'DataGridView'를 사용한다면'DataSource'를'List'로 간단히 설정할 수 있습니다. 사용자가 행에서 'DataBoundItem'은 행 뒤에있는 데이터 바인딩 항목입니다. –