如何将Form1中的变量行传递给UserControl.cs代码?

时间:2014-01-28 08:38:37

标签: c# winforms

这是form1中的代码,包括Load事件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;
using System.Collections;

namespace RssNews
{
    public partial class Form1 : Form
    {
        string readableRss;
        private List<string> lines = new List<string>();

        public Form1()
        {
            InitializeComponent();
        }




        private void Form1_Load(object sender, EventArgs e)
        {
            readableRss = RssReader.covertRss("http://rotter.net/rss/rotternews.xml");
            const int maxLines = 5;

            lines = Regex.Split(readableRss, "\r\n")
                               .Where(str => !string.IsNullOrEmpty(str))
                               .ToList();
            newsFeed1.GetLines = lines;
            this.newsFeed1.NewsTextFeed = new string[maxLines];
            SetupText(lines
                         .Skip(Math.Max(0, lines.Count() - maxLines))
                         .Take(maxLines)
                         .ToArray());
            /*const int maxLines = 5;

            string[] lines = Regex.Split(readableRss, "\r\n");
            this.newsFeed1.NewsTextFeed = new string[maxLines];
            SetupText(lines.Skip(Math.Max(0, readableRss.Length - maxLines)).Take(maxLines).ToArray());*/

                this.newsFeed1.TextColor = new Color[5];
                SetupColors(new Color[] { Color.Blue });
                //set this Variable to the Height of the Control to display one label at a time
                this.newsFeed1.Spacing = this.newsFeed1.Height;
                this.newsFeed1.SetTexts();
                this.newsFeed1.startFeed();
        }

当我使用断点时:

newsFeed1.GetLines = lines;

我看到GetLines不为null并从行中获取内容。

问题在于NewsFeed.cs UserControl:

using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;

namespace RssNews
{
    public partial class NewsFeed : UserControl
    {
        SpeechSynthesizer speaker;
        public List<string> GetLines = new List<string>();

这里GetLines为空! 我希望GetLines将包含form1中变量行中的内容。 在Form1行中包含100个索引。当我在Form1中将GetLines分配给行时,我看到GetLines还包含100个索引。

但是当我在线上的NewsFeed代码上使用断点时:

public List<string> GetLines = new List<string>();

GetLines包含0个空的索引。

我想将form1中变量行的内容传递给Newsfeed.cs中的变量GetLines

1 个答案:

答案 0 :(得分:1)

如果将usercontrol加载到该表单中,您可以使用此问题How do I execute code AFTER a form has loaded?中的解决方案。使用表单的Shown事件。