C# 控件 和 类求助
我想在Form1类以外的类里访问Form1的控件,不知道该如何实现。比如publicpartialclassForm1:Form{publicForm1(){Initia...
我想在Form1类以外的类里访问Form1的控件,不知道该如何实现。比如
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
Class ConfTxtBox
{
//如何在这个类里访问Form1的控件?请高手指教
}
把Form1类的控件设置为public我早都试过,是不行的,如果您知道怎么做,请给个示例好吗?就比如在ConfTxtBox类里,给Form1面板上的textBox1实现.text属性 展开
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
Class ConfTxtBox
{
//如何在这个类里访问Form1的控件?请高手指教
}
把Form1类的控件设置为public我早都试过,是不行的,如果您知道怎么做,请给个示例好吗?就比如在ConfTxtBox类里,给Form1面板上的textBox1实现.text属性 展开
10个回答
展开全部
用一下这个:
注意:你要先设置一下窗口的Tag属性和你要的控件的Tag属性!!!!!!
类是引用类型的,所以只要获取这个程序集打开的所有窗口中你要找的窗口,然后声明一个引用指向这个窗口,就可以对这个窗口的控件啊,属性啊什么的操作了!!!!!!!
foreach (Form frm in Application.OpenForms)
//遍历本程序带开的所有的窗口
{
if (frm is 你的窗口名称&&frm.Tag==你设置的Tag值)
//判断这个窗口的Tag属性是否和你想控制的窗口的Tag属性相同
{
你的窗口名称 cf = (你的窗口名称)frm;
//申明一个引用指向打开的要控制的这个窗口
foreach (Control item in cf.Controls)
//遍历这个窗口中的所有控件
{
if (item is 要获取的该窗口的控件名(如TextBox))
//先判断是不是你要控制的控件的类型是否与便利出来的控件类型相同
{
if(item.Tag==你设置的控件的tag值)
//再判断这个控件的Tag属性是否和你设置的控件的Tag相同
{
//在这里的item就是你要控制的控件了,你在这里改变控件就可以了
item.Text="*******";
}
}
}
}
}
这个方法本人测试完全通过,
如果你不赞成这个方法,那就把控件申明为static的,不过这样的话,是麻烦的不能再麻烦了的
注意:你要先设置一下窗口的Tag属性和你要的控件的Tag属性!!!!!!
类是引用类型的,所以只要获取这个程序集打开的所有窗口中你要找的窗口,然后声明一个引用指向这个窗口,就可以对这个窗口的控件啊,属性啊什么的操作了!!!!!!!
foreach (Form frm in Application.OpenForms)
//遍历本程序带开的所有的窗口
{
if (frm is 你的窗口名称&&frm.Tag==你设置的Tag值)
//判断这个窗口的Tag属性是否和你想控制的窗口的Tag属性相同
{
你的窗口名称 cf = (你的窗口名称)frm;
//申明一个引用指向打开的要控制的这个窗口
foreach (Control item in cf.Controls)
//遍历这个窗口中的所有控件
{
if (item is 要获取的该窗口的控件名(如TextBox))
//先判断是不是你要控制的控件的类型是否与便利出来的控件类型相同
{
if(item.Tag==你设置的控件的tag值)
//再判断这个控件的Tag属性是否和你设置的控件的Tag相同
{
//在这里的item就是你要控制的控件了,你在这里改变控件就可以了
item.Text="*******";
}
}
}
}
}
这个方法本人测试完全通过,
如果你不赞成这个方法,那就把控件申明为static的,不过这样的话,是麻烦的不能再麻烦了的
展开全部
建议不要直接操作另一个类中的对象,可以在一个类中添加一个相关的Method,然后由另外个类来调用,这是OO的思想。你问题可以这样解决:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void ChangeTestText(string text)
{
textBox1.Text = text;
}
}
Class ConfTxtBox
{
private Form1 _form = null; // 可以通过构造函数传入
private void SetForm1Text()
{
if ( _form1 != null )
{
_form1.ChangeTestText("This is a test string!");
}
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void ChangeTestText(string text)
{
textBox1.Text = text;
}
}
Class ConfTxtBox
{
private Form1 _form = null; // 可以通过构造函数传入
private void SetForm1Text()
{
if ( _form1 != null )
{
_form1.ChangeTestText("This is a test string!");
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
公布一个属性让他来访问TextBox就行了
public partial class Form1 : Form
{
public TextBox textbox
{
get { return this.textBox1; }
set { this.textBox1 = value; }
}
public Form1()
{
InitializeComponent();
}
不过
Class ConfTxtBox
{
这个类必需能有Form1的一个实例的访问权
}
public partial class Form1 : Form
{
public TextBox textbox
{
get { return this.textBox1; }
set { this.textBox1 = value; }
}
public Form1()
{
InitializeComponent();
}
不过
Class ConfTxtBox
{
这个类必需能有Form1的一个实例的访问权
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Form1里做个属性或者方法谁不会......
把Form1窗体的textBox1设置为public
在Form2窗体中:((类名)(窗体名)).textBox1.Text="哈哈";
把Form1窗体的textBox1设置为public
在Form2窗体中:((类名)(窗体名)).textBox1.Text="哈哈";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class ConfTxtBox
{
private Form1 form;
public ConfTxtBox(Form1 form)
{
this.form = form;
}
void dd()
{
form.textBox1.text = "test";
}
}
{
private Form1 form;
public ConfTxtBox(Form1 form)
{
this.form = form;
}
void dd()
{
form.textBox1.text = "test";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询