나는 C#에서 여러 양식을 포함하는 Windows 양식 응용 프로그램을 만들고 있습니다.
ShowDialog()를 사용하여 주 양식에서 두 번째 양식을 호출합니다.Windows 이상한 함수 호출 점프
그런 다음 사용자 지정 개체로 두 번째 폼의 콤보 상자를 채우려고합니다. 사용자 정의 클래스에는 DataTable을 ArrayList로 변환하는 메소드가 있습니다. 그러나 ArrayList에 항목을 추가하려고 할 때마다 SplitPanel 페인트 이벤트의 이벤트 핸들러가 발생합니다. 또한이 패널은 기본 폼에 배치됩니다.
private void frmInsertSurovina_Load(object sender, EventArgs e)
{
if (mode == 0) button1.Text = "Внеси";
else button1.Text = "Зачувај";
DB data=new DB();
DataTable devizi = data.GetDevizi();
DeviziCollection collDevizi = new DeviziCollection();
collDevizi.LoadCollection(devizi);
cmbDeviza.DataSource = collDevizi.Collection;
cmbDeviza.DisplayMember = "Text";
cmbDeviza.ValueMember = "Value";
//some other code here
}
이 사용자 정의 클래스는 : 나는 콤보 상자를 채우는 곳
frmInsertSurovina insertSurovina = new frmInsertSurovina(0);
insertSurovina.ShowDialog();
이것은 : 이것은 내가 두 번째 폼을 표시 곳이다
: 여기
코드입니다 :public class DeviziCollection
{
public ArrayList Collection { get; set; }
public DeviziCollection()
{
}
public void LoadCollection(DataTable table)
{
foreach (DataRow row in table.Rows)
{
Deviza item = new Deviza();
item.Text = row["Naziv"].ToString();
item.Value = row["ID"].ToString();
Collection.Add(item);
}
}
}
마지막 행의 Collection.Add(Item);
에서 frmInsertSurovina_Load
부리가 실행되고 프로그램이 어딘가에 점프합니다. (페인트 이벤트가 발생하기 전에 언급했지만 코드에서 삭제하고 더 이상 발생시키지 않습니다. 디버깅 할 때 프로그램은로드 이벤트 핸들러가 완료되지 않은 상태로 계속 작동합니다. Paint 이벤트 핸들러의 코드는 두 번째 폼을 호출하는 코드 블록 바로 뒤에있었습니다).
버그 일 수 있습니까? 도와주세요!
디버거가 활성화되어있는 동안 코드를 변경 했습니까? –
나는 정말로 기억할 수 없다. 그러나 나는 생각하지 않는다. ... 그게 문제가 될 수 있니? 어떻게 되돌릴 수 있습니까? –