VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 649|回复: 2

tabPage1里用不了公共方法

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-29 08:20:01 | 显示全部楼层 |阅读模式
我定义了个自动增加控件的方法
public void AddMyControls(int pos_width, int pos_height, string text, string name)
        {
            PictureBox UserControl = new PictureBox();
            UserControl.Name = "PictureBox" + name;
            UserControl.Location = new Point(40 + pos_width, 30 + pos_height);
            UserControl.Size = new Size(124, 50);
            this.Controls.Add(UserControl);
            UserControl.Click += new System.EventHandler(this.pictureBox_Click);
            //MessageBox.Show(text.ToString());
        }

但是这个方法的作用域只对于this.AddMyControls

this.tabPage1.AddMyControls是无效的
有什么方法可以解决啊
回复

使用道具 举报

0

主题

26

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-3-5 12:00:02 | 显示全部楼层
AddMyControls是你的窗体类的方法,不是TabPage类的方法
this.tabPage1.AddMyControls当然是无法编译通过的,除非你重载TabPage类

比较简单的解决方法是加上Control参数,将父控件传进来
public void AddMyControls(Control ctrl, int pos_width, int pos_height, string text, string name)
{
  ....
  ctrl.Add(UserControl);
  ....
}
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-8 21:15:01 | 显示全部楼层
楼上说得很好。
这样写出来的方法通用性更强。
如果真的要实现你的需求,你可以继承TabPage比如MyTabPage,给它加个protected方法叫做是AddMyControls(),然后把MyTabPage的实例加到你的TabControl中去。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表