问题如标题,代码如下: public Form1()//A窗体构造函数
{
InitializeComponent(); //comboBoxOptions.Items.Add("Site");
//comboBoxOptions.Items.Add("Compaign");
//comboBoxOptions.Items.Add("Mailing");
comboBoxMsgType.Items.Add("StandardMailing");
comboBoxMsgType.Items.Add("StandardRecurringMailing");
comboBoxMsgType.Items.Add("DirectDeploymentMailing");
comboBoxMsgType.Items.Add("NotificatedTriggeredMailing");
comboBoxMsgType.Items.Add("RecurringTriggeredMailing");
comboBoxMsgType.SelectedIndex = 0; comboBox2.Items.Add("None");
comboBox2.SelectedIndex = 0;
UserName = DMC_Application_Login.UserName;
password = DMC_Application_Login.Password;
Fromname = DMC_Application_Login.FramName; try
{
StreamReader fileRead=new StreamReader("D:\\VS2008Projects\\C# FormProjects\\DMCRequest System\\DMCRequest System\\Profile.txt");
String strline;
fileRead.ReadLine(); strline=fileRead.ReadLine();
fileRead.Close(); ArrayList ClientList = new ArrayList();
if (strline.IndexOf(",") != -1)
{
ClientList.AddRange(strline.Split(','));
for (int i = 0; i < ClientList.Count; i++)
{
comboBoxClient.Items.Add(ClientList[i].ToString());
}
}
else
comboBoxClient.Items.Add(strline.Trim());
comboBoxClient.SelectedIndex = 0;
String data = "<!DOCTYPE DMConnect SYSTEM \"DMConnect.dtd\">";
data += "<DMConnect><GetObjectNames>";
data += "<Depth>SITE</Depth>";
data += "<ClientName>"+comboBoxClient.SelectedItem.ToString()+"</ClientName>";
data += "</GetObjectNames></DMConnect>"; StrToXML(POST_TO_DMC("http://dmconnect.na.epidm.net/dmconnect/dmconnect.exe",Fromname, "4.0", UserName,password,
"[email protected]", data), "SiteName");
}
catch(Exception Ex)
{
MessageBox.Show("SiteName Error:"+Ex.Message);
}
//调用B窗体: private void btnaddlist_Click(object sender, EventArgs e)
{
Add_New_List addnewlist = new Add_New_List(); addnewlist.Show();
}
//B窗体构造函数:
public partial class Add_New_List : Form
{
String Username, PsdValue,FromName;
bool Flag = true;
public Add_New_List()//,String MsgTemplate
{
InitializeComponent();
comboBoxCamType.Items.Add("DirectMailCampaign");
comboBoxCamType.Items.Add("ApprovalCampaign");
comboBoxCamType.SelectedIndex = 1;
Username = DMC_Application_Login.UserName;
PsdValue = DMC_Application_Login.Password;
FromName = DMC_Application_Login.FramName;
// Msgtype = MsgType;
try
{
StreamReader strRead = new StreamReader("D:\\VS2008Projects\\C# FormProjects\\DMCRequest System\\DMCRequest System\\Profile.txt");
String strsite;
strRead.ReadLine(); strsite = strRead.ReadLine(); ArrayList ClientsList = new ArrayList();
ArrayList SiteList = new ArrayList();
//Add ClientName of profile text
if (strsite.IndexOf(",") != -1)
{
ClientsList.AddRange(strsite.Split(',')); for (int i = 0; i < ClientsList.Count; i++)
{
comboBoxClients.Items.Add(ClientsList[i].ToString());
}
}
else
comboBoxClients.Items.Add(strsite.Trim());
comboBoxClients.SelectedIndex = 0;
//Qquestion
//ADD SiteName of profile text
strRead.ReadLine();
strsite = strRead.ReadLine();
strRead.Close();
if (strsite.IndexOf(",") != -1)
{
SiteList.AddRange(strsite.Split(','));
//fileRead.Close();
for (int j = 0; j < SiteList.Count; j++)
{
comboBoxSites.Items.Add(SiteList[j].ToString());
}
}
else
comboBoxSites.Items.Add(strsite.Trim());
comboBoxSites.SelectedIndex = 0;
[b] //每次运行到这里时就会跳到A窗体的构造函数,但也会继续执行B窗体的构造函数,这时会出现两个A窗体 //alter dateTimePicker1 control's datatime
//dateTimePicker1.Text=DateTime.Now.Year.ToString()+(DateTime.Now.Month+1).ToString()+DateTime.Now.Day.ToString();
//Get listname
String data = "<!DOCTYPE DMConnect SYSTEM \"DMConnect.dtd\">";
data += "<DMConnect><GetListNames>";
data += "<AcknowledgementsTo>";
data += "<EmailAddress>[email protected]</EmailAddress>";
data += "<Option>9</Option>";
data += "</AcknowledgementsTo>";
data += "<ClientName>"+comboBoxClients.SelectedItem.ToString()+"</ClientName>";
data += "<SiteName>"+comboBoxSites.SelectedItem.ToString()+"</SiteName>";
data += "</GetListNames>";
data += "</DMConnect>";
Flag = false;
StrToXML(POST_TO_DMC("http://dmconnect.na.epidm.net/dmconnect/dmconnect.exe",FromName, "4.0", Username, PsdValue,
"[email protected]", data));
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
{
InitializeComponent(); //comboBoxOptions.Items.Add("Site");
//comboBoxOptions.Items.Add("Compaign");
//comboBoxOptions.Items.Add("Mailing");
comboBoxMsgType.Items.Add("StandardMailing");
comboBoxMsgType.Items.Add("StandardRecurringMailing");
comboBoxMsgType.Items.Add("DirectDeploymentMailing");
comboBoxMsgType.Items.Add("NotificatedTriggeredMailing");
comboBoxMsgType.Items.Add("RecurringTriggeredMailing");
comboBoxMsgType.SelectedIndex = 0; comboBox2.Items.Add("None");
comboBox2.SelectedIndex = 0;
UserName = DMC_Application_Login.UserName;
password = DMC_Application_Login.Password;
Fromname = DMC_Application_Login.FramName; try
{
StreamReader fileRead=new StreamReader("D:\\VS2008Projects\\C# FormProjects\\DMCRequest System\\DMCRequest System\\Profile.txt");
String strline;
fileRead.ReadLine(); strline=fileRead.ReadLine();
fileRead.Close(); ArrayList ClientList = new ArrayList();
if (strline.IndexOf(",") != -1)
{
ClientList.AddRange(strline.Split(','));
for (int i = 0; i < ClientList.Count; i++)
{
comboBoxClient.Items.Add(ClientList[i].ToString());
}
}
else
comboBoxClient.Items.Add(strline.Trim());
comboBoxClient.SelectedIndex = 0;
String data = "<!DOCTYPE DMConnect SYSTEM \"DMConnect.dtd\">";
data += "<DMConnect><GetObjectNames>";
data += "<Depth>SITE</Depth>";
data += "<ClientName>"+comboBoxClient.SelectedItem.ToString()+"</ClientName>";
data += "</GetObjectNames></DMConnect>"; StrToXML(POST_TO_DMC("http://dmconnect.na.epidm.net/dmconnect/dmconnect.exe",Fromname, "4.0", UserName,password,
"[email protected]", data), "SiteName");
}
catch(Exception Ex)
{
MessageBox.Show("SiteName Error:"+Ex.Message);
}
//调用B窗体: private void btnaddlist_Click(object sender, EventArgs e)
{
Add_New_List addnewlist = new Add_New_List(); addnewlist.Show();
}
//B窗体构造函数:
public partial class Add_New_List : Form
{
String Username, PsdValue,FromName;
bool Flag = true;
public Add_New_List()//,String MsgTemplate
{
InitializeComponent();
comboBoxCamType.Items.Add("DirectMailCampaign");
comboBoxCamType.Items.Add("ApprovalCampaign");
comboBoxCamType.SelectedIndex = 1;
Username = DMC_Application_Login.UserName;
PsdValue = DMC_Application_Login.Password;
FromName = DMC_Application_Login.FramName;
// Msgtype = MsgType;
try
{
StreamReader strRead = new StreamReader("D:\\VS2008Projects\\C# FormProjects\\DMCRequest System\\DMCRequest System\\Profile.txt");
String strsite;
strRead.ReadLine(); strsite = strRead.ReadLine(); ArrayList ClientsList = new ArrayList();
ArrayList SiteList = new ArrayList();
//Add ClientName of profile text
if (strsite.IndexOf(",") != -1)
{
ClientsList.AddRange(strsite.Split(',')); for (int i = 0; i < ClientsList.Count; i++)
{
comboBoxClients.Items.Add(ClientsList[i].ToString());
}
}
else
comboBoxClients.Items.Add(strsite.Trim());
comboBoxClients.SelectedIndex = 0;
//Qquestion
//ADD SiteName of profile text
strRead.ReadLine();
strsite = strRead.ReadLine();
strRead.Close();
if (strsite.IndexOf(",") != -1)
{
SiteList.AddRange(strsite.Split(','));
//fileRead.Close();
for (int j = 0; j < SiteList.Count; j++)
{
comboBoxSites.Items.Add(SiteList[j].ToString());
}
}
else
comboBoxSites.Items.Add(strsite.Trim());
comboBoxSites.SelectedIndex = 0;
[b] //每次运行到这里时就会跳到A窗体的构造函数,但也会继续执行B窗体的构造函数,这时会出现两个A窗体 //alter dateTimePicker1 control's datatime
//dateTimePicker1.Text=DateTime.Now.Year.ToString()+(DateTime.Now.Month+1).ToString()+DateTime.Now.Day.ToString();
//Get listname
String data = "<!DOCTYPE DMConnect SYSTEM \"DMConnect.dtd\">";
data += "<DMConnect><GetListNames>";
data += "<AcknowledgementsTo>";
data += "<EmailAddress>[email protected]</EmailAddress>";
data += "<Option>9</Option>";
data += "</AcknowledgementsTo>";
data += "<ClientName>"+comboBoxClients.SelectedItem.ToString()+"</ClientName>";
data += "<SiteName>"+comboBoxSites.SelectedItem.ToString()+"</SiteName>";
data += "</GetListNames>";
data += "</DMConnect>";
Flag = false;
StrToXML(POST_TO_DMC("http://dmconnect.na.epidm.net/dmconnect/dmconnect.exe",FromName, "4.0", Username, PsdValue,
"[email protected]", data));
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
所以还会出现一个文件读写冲突问题: 主要还是不知道为什么B窗体构造函数执行一半时怎么跑去执行A窗体的构造函数了。郁闷
comboBoxSites.SelectedIndex = 0; //<----
//每次运行到这里时就会跳到A窗体的构造函数,
//但也会继续执行B窗体的构造函数,这时会出现两个A窗体 comboBoxSites.SelectedIndex = 0可能触发一些事件,比如comboBoxSites_SelectedIndexChanged()等。
如果在事件响应中创建了A,程序停在你A窗体构造函数中的断点就不奇怪了。
在红色字体显示的地方:由于两个构造函数调用的是同一个文件,所以这样执行起来就会出现文件读写冲突(因为B窗体的构造函数中文件还没关,程序就跑去执行A窗体的构造函数)
而且奇怪的是:跑回去执行完A窗体构造函数后又跑回去继续执行B窗体构造函数的剩余部分了。