1

我想知道是否有可能在 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);
        }
    }

现在我希望能够从形式 2 调用该串行端口,而无需创建实例。我让它与一个实例一起工作,但我发现为我想在 form2 中使用的每个串行端口、文本框或工具创建一个实例很乏味。有什么方法可以像在 VB.NEt 中那样称呼它们吗?

4

4 回答 4

2

您最好查看的是使用ApplicationSettings

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

尝试让所有应用程序表单传递参数会很快变得混乱。

于 2013-07-31T17:35:21.123 回答
1

你可以让你的表单继承自一个通用的表单基类,在那里你可以放置你的通用属性。

于 2013-07-31T17:25:18.090 回答
1

而不必为我想调用的所有内容创建一个实例

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

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()
    {}
}
于 2013-07-31T17:28:39.167 回答
1

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

于 2013-07-31T17:31:12.980 回答