有几种方法可以实现这一目标。您可以将静态属性存储在静态类中,将静态属性/属性存储在表单类中,或者将值存储在集合中。
示例 1
具有静态属性的静态类。
来源:
public static class FormValues
{
private static string _message;
public static string Message
{
get { return _message; }
set
{
// Do stuff with value ...
// Handle any errors with the value ...
// Throwing an exception here will tell you which form it was thrown at too ...
_message = value;
}
}
}
用法:
// Form1
FormValues.Message = "Hello Form2";
// Form2
string message = FormValues.Message;
示例 2
表单中的属性。
来源:
// Form1 etc.
public static string Form1GlobalMessage { get; private set; }
public string Form1Message { get; private set; }
用法:
// Form1
Form1Message = "This message is unique to this instance.";
Form1GlobalMessage = "This message is shared by all Form1 instances.";
// Form2
var form1 = new Form1();
string uniqueMessage = form1.Form1Message;
string globalMessage = Form1.Form1GlobalMessage;
以上所有表格都可以完成,并且可以随心所欲地使用。这只能在表单之外读取,因为只有 Form1 有权修改属性。如果您想通过从多个表单获取和设置来分享类似的内容,请使用示例 1。
示例 3
一个价值集合。
在我看来,这可能是最少使用的解决方案,并且仅在您希望通过动态标识获取/设置动态值时才应使用。 Example 1 和 Example 2 可用作在何处实现集合的参考。而不是属性,您只需放置一个集合 ex。 Dictionary<TKey,TValue>
来源:
// Example for the static class
public static class FormValues
{
private static Dictionary<string,string> _messages;
static FormValues()
{
_messages = new Dictionary<string, string>();
}
public static Dictionary<string,string> Messages
{
get { return _messages; }
}
}
用法:
// Form1
FormValues.Messages.Add("Message", "Hello World!");
// Form2
string message = FormValues.Messages["Message"];
当然,还有很多其他的方法可以实现这种机制,这完全取决于你正在做什么和想要做什么,你以何种方式做到这一点。
不过,这应该有助于您理解这个概念。