将两种形式连接在一起

本文关键字:连接 在一起 两种 | 更新日期: 2023-09-27 18:25:45

我想知道是否可以在C#中将两个winform"链接"在一起。在某种程度上,我可以只调用变量,比如:ApplicationProperties.ApplicationPort.BaudRate,而不必为我想调用的所有内容创建一个实例?类似于VB.net。如果有人能给我指明正确的方向,我将不胜感激。

我有两个表单(MainBox)和(ApplicationProperties)。我希望两种形式都可以互相访问。以类似于VB.NET.的方式

例如:

在表单一中,我有一个串行端口(ApplicationPort),我正在将值写入一个.xml文件。

    public void SaveApplicationProperties()
    {
        try
        {
            //CreateNode(everything being referenced. Put text boxes, and drop down boxes here.
            XmlTextWriter writer = new XmlTextWriter(@"C:'ForteSenderv2.0'Properties.xml", System.Text.Encoding.UTF8);
            writer.WriteStartDocument(true);
            //Making the code indeted by 2 characters.
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 2;
            //Making the start element "Table".
            writer.WriteStartElement("Forte_Data_Gatherer_Application");
            //Calling the rst of the .xml file to write.
            CreateNode(ApplicationPort.PortName, ApplicationPort.BaudRate.ToString(), ApplicationPort.DataBits.ToString(), ApplicationPort.Parity.ToString(), ApplicationPort.StopBits.ToString(), ApplicationPort.Handshake.ToString(), writer);
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
            MessageBox.Show(ApplicationPort.PortName);
            MessageBox.Show(ApplicationPort.BaudRate.ToString());
        }
        catch (Exception ex)
        {
            MessageBox.Show("Writing to .xml file failure: " + ex.Message);
        }
    }

现在,我希望能够从中二调用该串行端口,而无需创建实例。我有一个实例,但我发现为我想在form2中使用的每个串行端口、文本框或工具创建一个实例很乏味。有什么办法我可以像在VB.NEt那样给他们打电话吗?

将两种形式连接在一起

对您来说,最好的方法是使用ApplicationSettings。

您的另一个次佳选择是其他答案包含的实例类。

尝试让所有的应用程序表单传递参数会很快变得一团糟。

而不必为我想称之为的所有东西创建一个实例

如果它是一个实例方法,那么你必须创建一个表单实例。如果你认为你可以使你的方法静态,那么你可以按照你想要的方式调用它。例如

public partial class Form1 : Form
{
     new Form2().InstanceMethod(); //Call with instance
     Form2.StaticMethod();   // call without creating instane
}

public partial class Form2 : Form
{
    public void InstanceMethod()
    {}
    public static void StaticMethod()
    {}
}

您可以让您的表单从一个公共的基本表单类继承,在那里您可以放置您的公共属性。

不,不能像您所说的那样将两个表单类链接在一起,因为它们是实例,并且您希望使用静态方法来处理来自两个不同实例的值,但将它们视为一个实例。