다음 버튼 이벤트에서 다른 목록의 항목에 항목을 추가하고 있습니다. 항목은 하드 lstPermissions
코딩하고 lstGivenPermissions
의 datasource
가 설정되지 않은바인딩 후 ListBox에 항목 추가 및 제거
private void btnAdd_Click(object sender, EventArgs e)
{
if (lstPermissions.SelectedItem != null)
if (!lstGivenPermissions.Items.Contains(lstPermissions.SelectedItem))
{
lstGivenPermissions.Items.Add(lstPermissions.SelectedItem);
}
}
, 괜찮습니다. 그러나 데이터를 lstGivenPermissions
에 바인딩 한 후이 메서드를 실행하려고하면이 예외가 발생합니다.
DataSource 속성을 설정하면 항목 컬렉션을 수정할 수 없습니다.
은 내가 데이터 바인딩이 예외를 발생시킨 것을 이해할 수 lstGivenPermissions
public List<string> GivenPermission
{
get { return lstGivenPermissions.Items.Cast<string>().ToList(); }
set { lstGivenPermissions.DataSource = value; }
}
에 데이터를 바인딩이 속성을 사용하고 있습니다. 하지만 내 요구 사항은 lstPermissions
에 대한 모든 사용 권한을로드하고 데이터베이스에서 lstGivenPermission
에 대한 선택한 사용자의 사용 권한을로드하려고합니다. 그러면 lstGivenPermissions
에 항목을 추가하고 제거 할 수 있어야합니다. 이 작업을 수행하는 방법을 알려 주시겠습니까? 당신은 목록 컨트롤에 바인딩 속성을 사용해서는 안
DataSource 속성을 설정 한 후 ListBox.Items 컬렉션을 수정하려는 것 같습니다. ObservableCollection에 바인딩하고 컬렉션에 항목을 추가/제거 할 수 없습니다. –
'ObservableCollection'이'winforms'에 적합한 방법인지는 모르겠지만 @RodrigoSilva가 맞다면, 항목을 삭제하지 말고 기본 데이터 소스 공급자 (wpf의 뷰 모델)의 메소드'Delete'를 호출하십시오. 데이터를 변경하고 UI에 변경 사항을 알립니다 ('winforms'에서는 바인딩을 사용하지 않았습니다.). – Sinatr
컨트롤이 데이터 바운드 인 경우 기본 데이터 소스의 데이터를 변경하여 내용을 변경해야합니다 – TaW