怎么在C#中的非窗体类中,改变窗体的控件(如Label1的值)呢,谢谢

形如:public class Form1 : Form
{
..............
}
public class Change()
{
//要在这里面调用Label1控件
}

在窗体类中添加静态实例, 外部class即可以和窗体类解耦
在任意位置调用窗体类获取实例方法, 访问窗体类控件
当然需要外部访问的控件必须是public, 或者遍历窗体的Controls

class Form1 : Form
{
private static Form1 _instance;
public Form1()
{
_instance = this;
InitializeComponent();
}
public static Form1 getInstance()
{
return Form1._instance;
}
}

class Chang
{
public void Change()
{
Form1.getInstance().Label1.text = "Changed";
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-11
将要在其它类调用的控件Label1声明为public(可以在控件的属性面板里设置,默认为private的),
然后将 Form1的实例传给Change实例
可以创建一个构造函数
public class Form1 :Form{
public void SetLabel(){
Change change=new Chanage(this);
chanage.ChangeLabel();
}
}

public class Change(){
private Form1 m_Form1;
public Change(Form1 form){
this.m_Form1=form;
}
public void ChangeLabel(){
this.m_Form1.Label1.Text="改变了哦";
}
}
第2个回答  2011-07-11
public class Change(Label myLable)
{
//要在这里面调用Label1控件
myLabel.Text="NewText";
}
调用的时候:
Change(this.Lable1);
第3个回答  2012-04-03
首先窗体和类要在同一个命名空间中
class Change() //非窗体类
{
private...//类中的私有变量
pravite Label _la; //用来改变窗体内label1的私有变量
public Change(..... ,Label lbl, .... )//构造函数

......;//其它
_la=lbl; //将传递进来的Label1赋给_la
}
_la.text="改变";//可以修改了

//窗体内
public partial class Frm : Form
{private Change ch;
ch=new Change(... ,label1,) //窗体调用Change类时把Label1传递过去。

C#类中如何修改窗体label的值???
你这样写,根本就是重新创建了一个form1对象,对于已经打开的form1,压根不是同一个,所以你修改的label的值也不是你原来打开的label的值。

c#怎么改checkBox1控件的名称和label1控件的名称?
太复杂,思路如下:初始化窗体时,button1的Enabled属性为false,就是没启用,给chechBox1添加Click事件,点击chechBox1时,事件内判断chechBox1的checked属性是true还是false,是true就启用button1,给button1添加button1_Click()事件,事件体写:this.label1.Text = "内容";不客气- -!!

C# 非静态的字段,方法或属性"_110262001.Form1.label1"要求对象引用
回答:this.label1.text this关键字引用被访问成员所在的当前实例。静态成员函数没有this指针。 this关键字可以用来从构造函数,实例方法和实例化访问器中访问成员。 不能在静态方法。静态属性访问器或者域声明的变量初始化程序中使用this关键字,这将会产生错误。 1. 在类的构造函数中出现的this作为一个值...

C#中 通过代码 把LABEL1放在PANEL里
l1.Size = new Size(20, 20); l1.Location = new Point(200, 170); this.Controls.Add(l1); \/\/只是在这里需要修改一下,因为this.controls表示的是Form的控件集合,改成panel1.Controls即可 this.pan1.Controls.Add(this.l1);

C#中怎么讲控件label当参数用
] { this.Label1, this.Label2 };labels[0].Text = "123";因为你要修改label的text值,所以,你要把两个label都保存起来,然后在使用的时候通过.text的方式修改 你那样做只是把label1和label2的text属性值给保存来了,再进行修改的时候,就会只修改数组里面的数据,而对控件是没有任何影响的。

C#中怎么用程序修改label1.Location
楼上正解,不过还可以这样 label1.Top=100;\/\/距顶端的距离 label1.Left=250;\/\/据左边的距离

c#怎么给另一窗体的label赋值?
简单点就用静态变量,比如说你的窗体a叫Form1,窗体上有个label1,在From1可以这么写 public static Form1 frm = null;public Form1(){ InitializeComponent();frm = this;} 加一个方法 public void setLabel(string str){ label1.Text = str;} 之后你在其它地方(比如窗体b里),就可以用 ...

c# label控件怎么不能改大小啊
c# label控件不能改大小是属性设置错误,解决方法如下:1、点击图标打开,点击无需代码。2、创建后新建项目选中窗体。3、点击工具箱的公共控件。4、双击label。5、点击label找到他的autosize,选中false。6、这时候就可以改变大小。

在C#程序运行时,如何改变无边框窗体大小和托动窗体,并且能处理鼠标事件...
当mouseLeave时label的属性visualble=fause即可。窗体的鼠标事件可以设置控件的cursor属性,里面可以选择许多种鼠标图形。只要是正常的Form都可以改变窗体大小,但是无边框的窗体只能用函数改变或者设置属性,在debug后是不能改变的。拖动窗体需要在窗体的load时间里面写入当鼠标单击不放时的事件即可,不难。

C#中如何在一个窗体中调用另一个窗体控件中的数据?
1、首先在窗体上增加如下的三个控件,两个label,一个button,我们要实现的效果是label1每一秒增加一个数字,label2每点击一下button增加一下数字。2、用到了定时任务,如下是两个定时任务的代码,一个是手动定时任务,就是我们点击按钮以后执行的,另一个是自动的订单是任务,程序运行以后执行的。3、...

相似回答