用户控件中的 static 函数怎么引用?

jarodzhao 2008-12-16 02:41:52
用户控件中的 static 函数怎么引用?

对 vb.net 有一点了解,刚刚接触 C#

用户控件中有一个 menu 控件,还有一个 static cMenuAddItem()

main.aspx 页面中包含了这个用户控件,在 main.aspx 页面中该如何使用这个 cMenuAddItem() 呢?!

我在 main.aspx 页面中有些了一个 loadMenuData(int p)的函数。
但是在这个函数里却怎么也无法引用到 cMenuAddItem()......
...全文
165 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcjbird 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zht_ok 的回复:]
现在只是用户控件中的问题了!

感觉前面描述的有点乱了,是这样:
用户控件类名是 cMenu
用户控件中有一个 menu 控件,id=Menu1
自己写了一个方法,public static void cMenuAddItem(MenuItem[] mis)
如何在自己写的这个方法中调用 Menu1 的一些属性或者方法?
[/Quote]

menu控件置为public.将cMenu的实例传给你写的方法,然后就可以调用了吧。
fenglm999 2008-12-16
  • 打赏
  • 举报
回复
cMenuAddItem这个方法是静态方法,要类名才能引用到,类名.cMenuAddItem()。
静态方法是不好引用非静态方法或是属性的,如果引用的对象是静态的就可以了。
而且你没有必要对cMenuAddItem()方法必须使用static
jarodzhao 2008-12-16
  • 打赏
  • 举报
回复
现在只是用户控件中的问题了!

感觉前面描述的有点乱了,是这样:
用户控件类名是 cMenu
用户控件中有一个 menu 控件,id=Menu1
自己写了一个方法,public static void cMenuAddItem(MenuItem[] mis)
如何在自己写的这个方法中调用 Menu1 的一些属性或者方法?
jarodzhao 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nmfengyun 的回复:]
static 是静态的,不需要new它,可直接调用.
[/Quote]

直接 Menu1.Item...使用时提示:非静态的字段、方法或属性“cMenu.Menu1”要求对象引用
nmfengyun 2008-12-16
  • 打赏
  • 举报
回复
static 是静态的,不需要new它,可直接调用.
jarodzhao 2008-12-16
  • 打赏
  • 举报
回复
控件中有一个 menu 控件,ID 是 Menu1

public partial class cMenu : System.Web.UI.UserControl
{

public static void cMenuAddItem(MenuItem[] mis)
{
if (mis.Length < 1)
{
//跳出循环
return;
}

cMenuClear();

for (int i = 0; i < mis.Length - 1; i++)
{
(new cMenu()).Menu1.Items.Add(mis[i]);
//提示:未将对象引用设置到对象的实例。
//控件中的 Menu 控件怎么使用?!
}
}

}
jarodzhao 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sprc_lcl 的回复:]
不清楚static有没错,不过public void cMenuAddItem是一定行的,你试试吧
cMenu1.cMenuAddItem
[/Quote]

总结出问题了,原来并不是 cMenu1.cMenuAddItem 的调用方法有问题
我一直在查看智能感知中的提示,但是始终没有这一项。现在发觉,如果不根据智能感知直接这样写,就能调用了
但是提示控件中的方法有问题,就是刚刚贴得那段代码。而控件中有问题的话,智能感知就不会提示。。。。郁闷

public static void cMenuAddItem(MenuItem[] mis)
{
if (mis.Length < 1)
{
//跳出循环
return;
}

cMenuClear();

for (int i = 0; i < mis.Length - 1; i++)
{
(new cMenu()).Menu1.Items.Add(mis[i]);
//控件中的 Menu 控件怎么使用?!
}
}
sprc_lcl 2008-12-16
  • 打赏
  • 举报
回复
不清楚static有没错,不过public void cMenuAddItem是一定行的,你试试吧
cMenu1.cMenuAddItem
jarodzhao 2008-12-16
  • 打赏
  • 举报
回复
这个是控件中的那个函数,前面加有public的

public partial class cMenu : System.Web.UI.UserControl

public static void cMenuAddItem(MenuItem[] mis)
{
if (mis.Length < 1)
{
return;
}

cMenuClear();

for (int i = 0; i < mis.Length - 1; i++)
{
(new cMenu()).Menu1.Items.Add(mis[i]);
}
}
}


[color=#F00]这个是在 Page 页面中的函数,用户控件在页面中的 ID 是 cMenu1[/color]

private void loadMenuData(string Permission)
{
cMenu1.cMenuAddItem(1) //没有个这方法
cMenu.cMenuAddItem(1) //也没有这个方法
}
我姓区不姓区 2008-12-16
  • 打赏
  • 举报
回复
控件类名.cMenuAddItem()
sprc_lcl 2008-12-16
  • 打赏
  • 举报
回复
函数前加public

111,131

社区成员

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

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

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