在当前窗体上对其他窗体及其控件进行操作

网上很多人问如何在当前窗体上获取其他窗体的引用,作为初学者,我也曾搜索很多资料寻求答案。探索之后找到一个方法,虽然不是明确获得目标窗体的引用以便像this.XXX这样对其控件进行操作,但是也基本达到了相同的目的。下面简单show一下这个方法,但本文并非意在推荐这个方法如何如何牛逼,如何如何有用,仅仅是贴出来让大家看看,看看它到底怎么样,好在哪里,差在哪里,所以如果大神们有什么更好的方法,还望不吝赐教哈。

 

首先,假设有FormA和FormB两个窗体,分别有buttonA和buttonB。

给ButtonA添加事件以打开FormB

private void buttonA_Click(object sender, EventArgs e)
{
     new FormB().Show();
}


现在在buttonB上添加事件已改变buttonA的Text

private void buttonB_Click(object sender, EventArgs e)
{
     foreach (Form f in Application.OpenForms)//获取当前打开的所有Form并迭代
     {
          if (f is FormA)
          {
              foreach (Control ctrl in f.Controls)//获取FormA的所有控件并迭代
              {
                  if (ctrl.Name == "buttonA")
                  {
                      ctrl.Text = "Text Changed";
                   }
              }
          }
     }
}


 到目前为止,尚且存在问题是,如果存在不止一个Form是FormA类型,那么如何只对其中一个进行操作呢?

这个问题很多情况下并没有什么实际价值,毕竟在应用程序里面,同样的Form允许打开多个的情况并不多见。

以上纯属个人见解,有意见就晒出来哈,别只喷人不拿出真凭实据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值