嗨我有以下代碼,我在其中調用函數名爲ControlAdd但編譯器調試代碼,直到此功能,但而不是此功能。下面是代碼:函數不調用
void SettingControls()
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
string[] ListText;
ListText = listBox1.Items[i].ToString().Split('.');
if (ListText[0] == ";Control")
{
if (ListText[1] == "Form")
{
this.Text = OrganizeData(listBox1.Items[i + 2].ToString().Trim());
this.Width = Convert.ToInt16(OrganizeData(listBox1.Items[i + 3].ToString()));
this.Height = Convert.ToInt16(OrganizeData(listBox1.Items[i + 4].ToString()));
this.Left = Convert.ToInt16(OrganizeData(listBox1.Items[i + 5].ToString()));
this.Top = Convert.ToInt16(OrganizeData(listBox1.Items[i + 6].ToString()));
}
else
{
string Control_Text;
string Control_Name;
int Control_Width, Control_Height, Control_Left, Control_Top;
Control_Name = OrganizeData(listBox1.Items[i + 2].ToString().Trim());
Control_Text = OrganizeData(listBox1.Items[i + 3].ToString().Trim());
Control_Width = Convert.ToInt16(OrganizeData(listBox1.Items[i + 4].ToString()));
Control_Height = Convert.ToInt16(OrganizeData(listBox1.Items[i + 5].ToString()));
Control_Left = Convert.ToInt16(OrganizeData(listBox1.Items[i + 6].ToString()));
Control_Top = Convert.ToInt16(OrganizeData(listBox1.Items[i + 7].ToString()));
ControlAdd(ListText[1].ToString(), Control_Name, Control_Text, Control_Width, Control_Height, Control_Left, Control_Top);
}
}
}
}
這不是由編譯器調用函數是:
ControlAdd(ListText[1].ToString(), Control_Name, Control_Text, Control_Width, Control_Height, Control_Left, Control_Top);
編譯調試代碼,直到這條線:
Control_Top = Convert.ToInt16(OrganizeData(listBox1.Items[i + 7].ToString()));
它只是跳過線。我使用了斷點,但是節目停止了。編譯器跳過這一行但沒有發生異常。 這個程序工作正常,直到我添加一個新的參數ControlName到函數控件添加。發生此問題後,添加參數。我也嘗試刪除我添加的參數,但問題仍然存在。
之後會發生什麼?你說它沒有被調用 - 發生了什麼*我的猜測是上一行發生異常,但很難知道...... – 2011-04-23 10:50:50
當你說「調試代碼直到這一行」時,你是什麼意思?執行是否停止併產生異常?該程序是否跳過該行?如果你在那一行設置了一個斷點,程序永遠不會中斷? – 2011-04-23 10:51:01
Project + Properties,Build選項卡,將平臺目標更改爲x86。這樣可以避免在64位操作系統上出現一個錯誤,在這個系統中,任何由窗體的Load事件調用的代碼都會在沒有診斷的情況下吞下異常。 – 2011-04-23 14:18:35