2013-07-29 6 views
0

Я пытаюсь сделать значение из .xml-файла равным выпадающему списку внутри другой формы. В vb.net я могу просто вызвать форму автоматически, но внутри C# мне пришлось использовать код ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties();, чтобы открыть другую форму.Вызов события в другой форме

private void Form1_Load(object sender, EventArgs e) 
    { 
     //Declaring the XmlReader. 
     XmlTextReader Reader = new XmlTextReader(@"C:\ForteSenderv2.0\Properties.xml"); 

     while (Reader.Read()) 
     { 
      switch (Reader.NodeType) 
      { 
       //Seeing if the node is and element. 
       case XmlNodeType.Text: 
       case XmlNodeType.Element: 
        if (Reader.Name == "BaudRate") 
        { 
         //Reading the node. 
         Reader.Read(); 
         //Making the Baud Rate equal to the .xml file. 
         Form.ApplicationProperties.BaudRatebx.SelectedIndex = Reader.Value; 
        } 
      } 
     } 
     } 

Почему я не могу назвать форму с помощью: ApplicationPropertiesWindow.BaudRatebx.SelectedIndex = Reader.Value

Я читаю из XML-файла, в котором значение BaudRatebx хранится. Я пытаюсь прочитать из него и сделать значение из .xml-файла равным BaudRatebx. Единственная проблема заключается в том, что BaudRatebx находится в другой форме, и я не могу назвать это, потому что не знаю, как, когда я пытаюсь вызвать раскрывающийся список, он говорит BaudRatebx недоступен из-за его уровня защиты. Нет никакого кода для объявления BaudRatebx, как это было в дизайнере.

+0

Какая ошибка вы получаете? Я вижу много причин, почему у вас могут быть проблемы, но без всего вашего кода и лучшего объяснения я немного потерян. Может быть, проблема с перекрестной резьбой? –

+0

Я не уверен, что понимаю и вопрос. Как объявляется «BaudRatebx»? – Amy

+1

Форма должна быть активной, чтобы иметь что-либо, установленное в ней, потому что сначала необходимо сначала инициализировать свойства или форму. – Bit

ответ

1

В Form1 добавьте общедоступное статическое поле для значения и установите его в своем читателе.

public static int BaudRatebx; 

private void Form1_Load(object sender, EventArgs e) 
{ 
      //Declaring the XmlReader. 
      XmlTextReader Reader = new XmlTextReader(@"C:\ForteSenderv2.0\Properties.xml"); 

      while (Reader.Read()) 
      { 
       switch (Reader.NodeType) 
       { 
        //Seeing if the node is and element. 
        case XmlNodeType.Text: 
        case XmlNodeType.Element: 
         if (Reader.Name == "BaudRate") 
         { 
          //Reading the node. 
          Reader.Read(); 
          //Making the Baud Rate equal to the .xml file. 
          BaudRatebx = int.Parse(Reader.Value); 
         } 
       } 
      } 
} 

Тогда в конструкторе вашей другой формы после того, как в InitalizeProperties() методе PUT,

BaudRatebx.SelectedIndex = Form1.BaudRatebx; 
+0

Это то, что я искал. Работал на 100% спасибо! –

1

От вас комментариев, я думаю, вы хотите, чтобы в вашем ApplicationProperties есть поглотитель, как тот, который следует:

public ComboBox GetComboBox 
{ 
     get { return this.ComboBox; } 
} 

И в вашей форме1 вы бы хотели:

ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties(); 
ApplicationPropertiesWindow .ShowDialog(); 
ComboBox comboBox = ApplicationPropertiesWindow.GetComboBox; 

Надеюсь, это поможет вам двигаться в правильном направлении.

Смежные вопросы