正在调用另一个窗体上的事件

本文关键字:事件 窗体 另一个 调用 | 更新日期: 2023-09-27 18:25:28

我正试图使.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在另一个表单上,我无法调用它,因为我不知道如何调用,当我尝试调用下拉框时,它说BaudRateb由于其保护级别而无法访问。没有像我在设计器中那样声明BaudRatebx的任何代码。

正在调用另一个窗体上的事件

在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()方法放入后的其他表单的构造函数中,

BaudRatebx.SelectedIndex = Form1.BaudRatebx;

根据您的评论,我认为您希望在ApplicationProperties中有一个getter,如下所示:

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

在你的Form1中,你会想:

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

我希望这能让你朝着正确的方向前进。