将两种形式链接在一起

时间:2013-07-31 17:23:38

标签: c# .net vb.net forms

我想知道是否有可能在C#中将两个winforms“链接”起来。在某种程度上,我可以调用变量,如: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);
        }
    }

现在我希望能够从表单2调用该串行端口而无需创建实例。我让它与一个实例一起工作,但我发现为每个我想在form2中使用的串口,文本框或工具创建一个实例是很繁琐的。无论如何,我可以像在VB中那样打电话给他们。NEt?

4 个答案:

答案 0 :(得分:2)

您最好看的是使用ApplicationSettings

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

尝试让所有应用程序表单都传递参数会过于繁琐。

答案 1 :(得分:1)

您可以让表单继承自公共基本表单类,您可以在其中放置公共属性。

答案 2 :(得分:1)

  

而不是为我想要调用的所有内容创建实例

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

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()
    {}
}

答案 3 :(得分:1)

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