ListBox.Refresh() 메소드를 오해 한 것 같아요. 누군가 나를 도울 수 있기를 바랬습니다.ListBox가 데이터 소스를 설정했지만 Refresh가 아무 것도하지 않습니다.
무엇을하려고합니까 :
Windows 양식을 초기화 할 때 목록 상자의 데이터 (원본 = SQL 데이터베이스 테이블)를로드하려고합니다. 또한 사용자가 데이터베이스에 데이터를 추가 할 때 목록 상자를 업데이트하고 싶습니다.
논리 : 내 DBQuery 정적 클래스 내 정적 메소드가
listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView;
DBquery.informationRetreval() : 나는 내 소스로 SQL 데이터베이스를
,이 설정됩니다. 모든 작업은 데이터베이스에서 테이블을 설정 한 다음 테이블을 반환합니다.
public Settings()
{
InitializeComponent();
listBoxDays.DataSource = DBQuery.informationRetreval().DefaultView;
}
사용자가 더 많은 데이터를 추가 할 때 : 나는 내가 추가하는 방법을 호출
나는 (나의 목록 상자가 기존 데이터로드)를 InitializeComponent를 같은 방법 내에서 데이터 소스를 설정 데이터베이스에 대한 데이터는 내가 전화 :listBoxDays.Refresh(); //update listbox
문제점 : 이 목록 상자를 업데이트하지 않습니다. 내 목록 상자 초기화시 데이터가 채워 지지만 변경되지 않으면 새로 고침이 작동하지 않습니다. 왜 그런가요? DataSource를 다시 설정할 수는 있지만 느껴진다. 몇 가지 문서를 살펴본 후에 이벤트 핸들러 인 DataSourceChanged를 찾았습니다. 그럼에도 불구하고 왜 일을 새롭게하지 않겠습니까?
양해 해 주셔서 감사합니다. 좀 더 명확해야 할 필요가 있으면 알려주십시오.
이벤트 핸들러를 사용하는 것이 더 합리적일까요 : ListControl.DataSourceChanged ... 데이터 소스가 변경되면 발생합니까? – 40Alpha
컨트롤을 정리하고 바인딩하는 메서드를 만들고 InitializeComponent() 및 .Refresh() 함수를 사용하는 다른 모든 곳에서 호출하는 메서드를 만드는 것이 좋습니다. –
또한 적어도 VB 버전에서 데이터를 데이터 소스에 바인딩 할 때 항목을 지울 수 없다는 오류가 발생했습니다. 내가 추가해야만하는 것은'Listbox.DataSource = Nothing'이라는 줄을 추가 한 다음 내 항목을 지우고 내 데이터를 리바 인딩하는 것입니다. – PsychoData