代码之家  ›  专栏  ›  技术社区  ›  F.P

在WinForms中使用方法操作控件

  •  1
  • F.P  · 技术社区  · 15 年前

    我一遍又一遍地用同样的代码在WinForms中填充控件,所以我想:嘿,你应该把它变成一个方法,而不是复制粘贴它!

    Main

    主要

    internal static void FillWithStuff(RichTextBox box)
    {
     Data data = GetSomeData("doesn't matter");
     foreach (Row row in data)
     {
      box.Text += row.ToString() + "\r\n";
     }
    }
    

    桌面应用程序

    internal RichTextBox textBox = new RichTextBox();
    // Some code
    Main.FillWithStuff(textBox);
    

    因此,该方法执行时没有异常或警告,但是数据没有填充在框中。我检查了数据是否已加载,它是,所以问题必须在其他地方。

    我应该如何正确地实现这一点?

    3 回复  |  直到 15 年前
        1
  •  1
  •   xian    15 年前
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private List<string> GetStuff()
            {
                List<string> stuff = new List<string>();
    
                stuff.Add("foo");
                stuff.Add("bar");
                stuff.Add("baz");
    
                return stuff;
            }
    
            private void FillWithStuff(TextBoxBase textBox)
            {
                List<string> stuff = GetStuff();
    
                foreach (string s in stuff)
                {
                    textBox.Text += s + "\r\n";
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                FillWithStuff(richTextBox1);
            }
        }
    }
    

    row.ToString() 是否返回非空字符串?

        2
  •  0
  •   Hiber    15 年前

    你打电话了吗主要填充凝灰岩(…)之后应用程序。运行(形式)或窗体.ShowDialog()? 那样的话,主要填充凝灰岩(..)将不会执行,除非关闭窗体,请尝试将方法调用移到它之前

        3
  •  0
  •   BobaFett    15 年前

    你能为Winform粘贴整个代码吗?

    据我所知,这是一个表单级变量,因为它被标记为内部变量。

    我使用一个已经在表单上的表单和一个动态创建的表单来测试这个问题,两次都是用预期的文本填充RichTextBox。

    推荐文章