建一用户控件,控件内有一LABEL1。建有方法及属性:
    public void SetText(string t)
        {
            label1.Text = t;
        }    public string text
        {
            set
            {
                label1.Text = value;
            }
            get
            {
                return label1.Text;
            }
        }
主窗口上有一个panel,两个button,
一个为创建用户控件,代码如下
     private void button1_Click(object sender, EventArgs e)
        {
            uc_test = new UC_Test();
            panel1.Controls.Clear();
            panel1.Controls.Add(uc_test);
            uc_test.Dock = DockStyle.Fill;
        }
现在想在点击第二个按钮来改变用户控件内label1的文本,该这样做?

解决方案 »

  1.   


    if(panel1.Controls.Count > 0)
    {
        Control c = panel1.Controls[0];
        if(c is uc_test)
        {
            ((uc_test)c).SetText("文本");
        }
    }
      

  2.   

    uc_test.text="参数";
    或uc_test.SetText("参数");
      

  3.   

    if(ut_test != null)
    {
        ut_test.text="文本";
    }
      

  4.   

    有看text属性,就不用SetText了。private void button2_Click(object sender, EventArgs e)
    {
       uc_test.text="文本";//给属性赋值
    }
      

  5.   

    foreach(Control c in panel1.Controls)
    {
        if(c is uc_test)
        {
           ((uc_test)c).SetText("");
        }
    }
      

  6.   

    首先我感谢大家。我把问题再详细解释一下,先看完整的代码:using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;namespace Test
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        UserControl uc_test;        private void button1_Click(object sender, EventArgs e)
            {
                uc_test = new UC_Test();
                panel1.Controls.Clear();
                panel1.Controls.Add(uc_test);
                uc_test.Dock = DockStyle.Fill;
            }        private void button2_Click(object sender, EventArgs e)
            {        }
        }
    }
    button1创建用户控件,button2用来改变用户控件内label1的文本。在实际应用时,button1是一个比较复杂的控件,可以在panel上创建不同的用户控件。一楼和五楼的代码在在编译时出错,提示错误:“Test.Form1.uc_test”是“字段”,但此处被当做“类型”来使用。
    2、3、4楼的根本不靠谱。
    6楼的我就无语了。
      

  7.   

    别人给你代码,你看懂了再粘呀,明显大小写的问题uc_test换成 UC_Test;你这名也起得..
      

  8.   

    foreach(Control c in panel1.Controls)
    {
      if(c is UserControl)
      {
        var uc = c as UserControl;
        uc.SetText("");
      }
    }