C# 如何从另一个窗体读取类的属性值?
我在一个cs文件中有以下类和方法。我已经为方法中的类指定了属性值 如何使用另一种形式读取分配给ReturnValue类中属性的值C# 如何从另一个窗体读取类的属性值?,c#,C#,我在一个cs文件中有以下类和方法。我已经为方法中的类指定了属性值 如何使用另一种形式读取分配给ReturnValue类中属性的值 public class ReturnValues { public int startdate { get; set; } public string imageurl { get; set; } public string headline { get; set; } public s
public class ReturnValues
{
public int startdate { get; set; }
public string imageurl { get; set; }
public string headline { get; set; }
public string fulldownloadLink { get; set; }
public string imagecopyright { get; set; }
public string filename { get; set; }
public int PreviousFileDate { get; set; }
}
string prtemp_path = Path.GetTempPath();
public void BingWallpaepr()
{
ReturnValues returnValues = new ReturnValues();
string baseurl = "http://bing.com";
//set the link for XML
var xml_link = "http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US";
string xmlStr;
using (var wc = new WebClient())
{
xmlStr = wc.DownloadString(xml_link); //Downloads the xml page
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlStr); //loads the xml page to the string
XmlElement root = xmlDoc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("/images/image");
foreach (XmlNode node in nodes)
{
returnValues.imageurl = node["url"].InnerText;
returnValues.headline = Regex.Replace(node["headline"].InnerText, "[^A-Za-z0-9 _]", "");
returnValues.imagecopyright = node["copyright"].InnerText;
returnValues.startdate = int.Parse(node["startdate"].InnerText);
//download the new image
returnValues.filename = string.Format(@"\bing_{0}.jpg", returnValues.startdate);
// MessageBox.Show(returnValues.filename.ToString());
returnValues.fulldownloadLink = baseurl + returnValues.imageurl;
wc.DownloadFile(new Uri(returnValues.fulldownloadLink), prtemp_path + returnValues.filename);
}
在我的另一种形式中,我试图获得如下属性值:
namespace CrimePortal
{
public partial class Loginfrm : Form
{
public Loginfrm()
{
InitializeComponent();
PlatformCommands.ReturnValues returnValues = new PlatformCommands.ReturnValues();
MessageBox.Show(returnValues.startdate.ToString());
}
}
但它返回空值。您将壁纸声明为空。不应该这样。声明应如下所示:
公共回归价值观
在方法的末尾,您应该返回returnValue
然后,从您的第一个表单登录开始,您需要有一个对另一个表单实例的引用,比方说,称为platformCommands。有很多方法可以做到这一点,这取决于您选择如何设计和构造UI
例如,如果您想在显示MessageBox之前实例化平台命令,您可以这样做
var platformCommands = new PlatformCommands();
PlatformCommands.ReturnValues returnValues = platformCommands.BingWallpaper();
MessageBox.Show(returnValues.startdate.ToString());
为了给你一个更好的答案,我可以问一下你是如何创建第二个表单的吗?第二个表单就像一个有按钮控件的常规表单。在按钮的click事件中,我试图显示ReturnValues类的一个属性,该属性位于名为PlatformCommands.cs.Ok的文件中,第二个表单是如何创建的?它是否在第一个表单中的某个事件发生后打开?它在启动应用程序时打开。从技术上讲,这是第一种形式。你能在你的问题中包含这部分代码吗?这样我就可以告诉你如何连接这两种形式了?最重要的是创建第二个表单,而不是在应用程序启动期间创建的表单