DataGridView
(Windows Forms) 사용자 컨트롤에있는 MultiSelect를 사용하도록 설정 한 상태에서 작업하고 있습니다. 여러 행을 선택하면DataGridView에서 여러 개의 선택된 INofityPropertyChange 개체 업데이트
foreach(DataGridViewRow dr in dataGridView.SelectedRows)
{
MyBusiness business = (MyBusiness)dr.DataBoundItem;
business.Rating = 5;
}
불행하게도, 단 하나의 DataGridViewRow
, 즉 하나의 즉시 새로 고침 : 나는 다음과 같은 코드를 구현하는 public 메소드를 호출하여 사용자 컨트롤 외부에서 선택된 모든 행을 업데이트 할 마지막으로 선택되었습니다. 기본 개체가 변경되고 NotifyPropertyChange-event가 발생합니다. 또한 업데이트 후 선택 항목을 변경하면 즉시 모든 행이 업데이트되도록 표시됩니다.
두 번째 사항, 매우 이상한 점 : NotifyPropertyChange가 발생하는 Rating
-property의 Setter에 중단 점을 설정하고 코드 실행을 계속하기 전에 몇 초 기다리면 모든 것이 제대로 작동합니다 (모든 행이 즉시 업데이트 됨). 내가 기다리지 않고 중단 점이 지나갈 때마다 F5를 매우 빠르게 누르면, 위에서 설명한 효과가 나타납니다.
내 비즈니스 객체는이 (크게 물론 단축)과 같습니다
public class MyBusiness : INotifyPropertyChanged
{
private int _rating;
public int Rating
{
get { return _rating; }
set
{
if(_rating != value)
{
_rating = value;
NotifyPropertyChanged("Rating");
}
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
누군가가 이미 너무이 문제를 발견했습니다, 심지어는 솔루션 (또는 해결 방법을) 아는 사람?