问题如标题,代码如下: 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);
            }
        }

解决方案 »

  1.   

    注:StrToXML函数是把XML文件的内容提取出来写到Profile.txt文件中去。
    所以还会出现一个文件读写冲突问题: 主要还是不知道为什么B窗体构造函数执行一半时怎么跑去执行A窗体的构造函数了。郁闷
      

  2.   


    comboBoxSites.SelectedIndex = 0;           //<----
    //每次运行到这里时就会跳到A窗体的构造函数,
    //但也会继续执行B窗体的构造函数,这时会出现两个A窗体 comboBoxSites.SelectedIndex = 0可能触发一些事件,比如comboBoxSites_SelectedIndexChanged()等。
    如果在事件响应中创建了A,程序停在你A窗体构造函数中的断点就不奇怪了。
      

  3.   

    没有继承关系的。
    在红色字体显示的地方:由于两个构造函数调用的是同一个文件,所以这样执行起来就会出现文件读写冲突(因为B窗体的构造函数中文件还没关,程序就跑去执行A窗体的构造函数)
    而且奇怪的是:跑回去执行完A窗体构造函数后又跑回去继续执行B窗体构造函数的剩余部分了。