C#中如何在一个类里访问主窗体中的控件

ruby0602 2009-11-30 08:25:46
这个类无控件,也不是form
...全文
1410 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
here1989 2010-01-17
  • 打赏
  • 举报
回复
同意25楼
ruby0602 2010-01-16
  • 打赏
  • 举报
回复
还是不行,这个类不是控件
不老神仙 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wartim 的回复:]
C# codeusing 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 Windows?-
[/Quote]

正解
江南小鱼 2010-01-16
  • 打赏
  • 举报
回复
比如说在类fm.cs中访问窗体Form1中的控件
可以这样做:
fm.cs

//声明页面控件
private DevExpress.XtraGrid.GridControl grd_UserInfo;
private DevExpress.XtraEditors.SimpleButton sbtAll;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="CurrentForm"></param>
public fm(Form CurrentForm)
{
this.ConstructorControls(CurrentForm);//构造窗体控件
}
private void ConstructorControls(Form CurrentForm)
{
grd_UserInfo = (GridControl)PublicInfo.FindControl(CurrentForm, "grd_UserInfo");
sbtAll = (SimpleButton)PublicInfo.FindControl(CurrentForm, "sbtAll");
sbtInAll = (SimpleButton)PublicInfo.FindControl(CurrentForm, "sbtInAll");
}

frm.cs添加using System.Windows.Forms;
PublicInfo是我自定义的一个获取窗体控件的方法
----------------------------------------
Form1窗体
fm _fm=new fm(this)
-------------
这样就可以在fm.cs使用Form1窗体控件了
NewUser2008 2010-01-16
  • 打赏
  • 举报
回复
用事件
智鹿软件 2010-01-01
  • 打赏
  • 举报
回复
把窗体传给方法!
ruby0602 2010-01-01
  • 打赏
  • 举报
回复
还是没解决,顶一个
chenwei1108 2010-01-01
  • 打赏
  • 举报
回复
在主窗体中设置你要访问的那个控件的Modifier属性为Public试下。
mngzilin 2010-01-01
  • 打赏
  • 举报
回复
类中方法
A(Form rm)
{
(rm.Controls["TtextBox1"] as TextBox).Text = "test";
}

在form1中调用:

类.A(this);
rcy5211314 2010-01-01
  • 打赏
  • 举报
回复
在form2中
public Form1 frm;


Form1中
Form2 form2=new Form2();
form2.frm=this;
form2.Show();


把Form1中要让Form2访问控件的modifies属性设为public Form2中就能对它操作了
ruby0602 2009-12-12
  • 打赏
  • 举报
回复
这个是有点麻烦,请大家提点意见
ruby0602 2009-12-08
  • 打赏
  • 举报
回复
主窗体作为属性传递?这个不可行吧,我用的是把控件作为属性传递
kantaguo 2009-12-07
  • 打赏
  • 举报
回复
补充一下,C#中除了基本数据类型外,其他的参数传递都是引用传递。
kantaguo 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ruby0602 的回复:]
主窗体类中的控件作为属性传递,但是在其它类中无法对其赋值,也就是控制的不是同一个控件
[/Quote]

没有看到你的代码,猜想你是在用richTextBox做类似QQ的消息窗口。

1. 在主窗体中提供public的对其控件的处置方法
2. 将主窗体整个作为参数传递到类中,或者用属性传递也可以
3. 在类中通过主窗体的实例调用public方法对主窗体控件进行访问与控制

如果你想做的复杂还可以用反射。
ruby0602 2009-12-07
  • 打赏
  • 举报
回复
自己顶一个
sylz2000 2009-12-07
  • 打赏
  • 举报
回复
顶楼上
rcy5211314 2009-12-06
  • 打赏
  • 举报
回复
设置窗体中控件的modifies的属性 为Public
ruby0602 2009-12-06
  • 打赏
  • 举报
回复
主窗体类中的控件作为属性传递,但是在其它类中无法对其赋值,也就是控制的不是同一个控件
ruby0602 2009-12-02
  • 打赏
  • 举报
回复
界面出来了,控件的文本也能控制了,但是有个问题
Main.RichMessage.AppendText(host + "刚上线\n");这句没有效果
MessageBox.Show(Main.RichMessage.Text);能显示正确的文本
怎么回事,解决了我再加分
Glory_genius 2009-11-30
  • 打赏
  • 举报
回复
在类里声明一个“主窗体”型的变量a,在构造里初始化,然后就可以a.(主窗体的任何方法)了 呵呵
加载更多回复(10)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧