在winform中如何引用另一个窗体的控件

伯牙绝弦 2011-10-14 05:20:26
需要在form2中点击按钮激发事件,然后form1中dataGridView1显示数据库数据
报错结果:Usermanagersystemform.Form2.dataGridView1”不可访问,因为它受保护级别限制
我该如何修改呢,改变控件的属性为public么,求指点
...全文
415 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
伯牙绝弦 2011-10-14
  • 打赏
  • 举报
回复
谢谢各位
lcaiyhh 2011-10-14
  • 打赏
  • 举报
回复
第一步在 在你显示Form2 的时候专递this参数
        private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
f2.Show();
}


第二步 在from1 中新增dataGridView1的访问器
        public DataGridView MyDataGridView
{
get {
return dataGridView1;
}
set {
dataGridView1 = value;
}
}

第三步
在from2 的构造函数中 增加参数,并赋值给 全局变量from1
        public Form1 from1;
public Form2(Form1 value)
{
InitializeComponent();
from1 = value;
}


第四步 绑定数据
        private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "AA";

DataRow dr1 = dt.NewRow();
dr1[0] = 2;
dr1[1] = "BB";

dt.Rows.Add(dr);
dt.Rows.Add(dr1);

from1.MyDataGridView.DataSource = dt;
}


解决问题 请给分

宝_爸 2011-10-14
  • 打赏
  • 举报
回复
或者声明一个property,返回控件的引用

public DataGridView MyGridView
{
get { return dataGridView1;}
}

外面直接使用这个property
伯牙绝弦 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lilei_new 的回复:]
用委托
[/Quote]
我是新手,能否提供以下例子我借鉴下
山东蓝鸟贵薪 2011-10-14
  • 打赏
  • 举报
回复
网上有实例,找找吧,简单的
宝_爸 2011-10-14
  • 打赏
  • 举报
回复
将dataGridView1声明的地方 改为Public。
山东蓝鸟贵薪 2011-10-14
  • 打赏
  • 举报
回复
声明
调用
lilei_new 2011-10-14
  • 打赏
  • 举报
回复
用委托
机器人 2011-10-14
  • 打赏
  • 举报
回复
Form2.Controls["dataGridView1"] as DataGridView

111,120

社区成员

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

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

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