我想知道是否有可能在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?
答案 0 :(得分:2)
答案 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)
不,您不能像说明那样将两个表单类链接在一起,因为它们是实例,并且您希望使用静态方法处理来自两个不同实例的值,但将它们视为一个。