建一用户控件,控件内有一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的文本,该这样做?
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的文本,该这样做?
if(panel1.Controls.Count > 0)
{
Control c = panel1.Controls[0];
if(c is uc_test)
{
((uc_test)c).SetText("文本");
}
}
或uc_test.SetText("参数");
{
ut_test.text="文本";
}
{
uc_test.text="文本";//给属性赋值
}
{
if(c is uc_test)
{
((uc_test)c).SetText("");
}
}
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楼的我就无语了。
{
if(c is UserControl)
{
var uc = c as UserControl;
uc.SetText("");
}
}