Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从另一个窗体读取类的属性值?_C# - Fatal编程技术网

C# 如何从另一个窗体读取类的属性值?

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

我在一个cs文件中有以下类和方法。我已经为方法中的类指定了属性值

如何使用另一种形式读取分配给ReturnValue类中属性的值

    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的文件中,第二个表单是如何创建的?它是否在第一个表单中的某个事件发生后打开?它在启动应用程序时打开。从技术上讲,这是第一种形式。你能在你的问题中包含这部分代码吗?这样我就可以告诉你如何连接这两种形式了?最重要的是创建第二个表单,而不是在应用程序启动期间创建的表单