帮忙看一段C#代码!

publicstaticboolIsOpendForm(stringtext){boolrBool=false;if(!string.IsNullOrEmpty(text... public static bool IsOpendForm(string text)
{
bool rBool = false;
if (!string.IsNullOrEmpty(text))
{
foreach (IDockContent content in frmMain.pCurrentWin.dockPanel.Contents)
{
if (content.DockHandler.TabText == text)
{
content.DockHandler.Activate();

rBool = true;
break;
}
}
}
return rBool;
}

想请教这段代码中 pCurrentWin 是什么意思?怎么定义的?
展开
 我来答
21d801
2011-08-09 · TA获得超过660个赞
知道小有建树答主
回答量:830
采纳率:100%
帮助的人:904万
展开全部
下面引用了一部分别人提问的代码,从名字就能猜到函数的作用,变量名带个pcurrentwin,可以看作一个窗体指针,但他仅仅是一个引用,表示当前dockpanel停靠上的窗体,你可以看看VS,就是一个典型的MDI程序,包括一个主窗体(frmMain)以及多个子窗体,因此pcurrentwin是保留了dockpanel停靠的某个子窗体

另外回soki,你还没仔细看代码吧?activate是激活的意思不是open哦,你别误导人。

问题是运行起来提示错误在"pCurrentWin"这里,所以这个东东应该还要自己声明之类的,就是不知道要怎样对其进行声明!
-------------------
你在主窗体的后台类声明一个public static Form pCurrentWin即可

我认为应该是这样的
Form pCurrentWin = new Form(); --------------不可能是这样的代码,frmMain.pCurrentwin不是局部变量,而是全局的的静态的,并且是public的,代码和前面描述的完全矛盾

这个变量应该是在主窗体里面命名的全局变量。不new也行,就是要小心空引用异常。
之后当每次Open一个窗体的时候需要先把要打开的窗体赋值给这个变量,例如:
pCurrentWin = 将要打开的窗体;
将要打开的窗体.Show(); -------------------pcurrentWindow不仅仅是即将打开的窗体而是当前操作激活的的或者说是dockpanel最后停靠的那个窗体,说法不准确。

#region 判断加载的窗体是否已经打开
/// <summary>
/// 判断加载的窗体是否已经打开
/// </summary>
/// <returns>已经打开返回TRUE,否则返回false</returns>
public static bool IsOpendForm(string text)
{
bool rBool = false;
if (!string.IsNullOrEmpty(text))
{
foreach (IDockContent content in MainForm.pCurrentWin.dockPanel.Documents)
{
if (content.DockHandler.TabText == text)
{
content.DockHandler.Activate();

rBool = true;
break;
}
}
}
return rBool;
}
#endregion
soki1111
2011-08-09
知道答主
回答量:23
采纳率:0%
帮助的人:18.9万
展开全部
应该是当前的窗体,这个循环的意思应该是得到当前窗体的一个叫做dockPanel的Panel控件里面所有的内容,之后找到其中一个内容的属性TabText与传入的参数一致的就激活这个内容,之后返回true,如果找不到就返回false。

我感觉这个代码的意思就是找到当前窗体里面的Tab控件,之后发送一个要打开的Tab窗口的名字,之后程序打开相应的Tab窗口。

从你的代码里面只能分析道这么多了,八九不离十。

楼上说的不太准确,不是判断打开,而是要打开。
追问
跟你说的差不多!
问题是运行起来提示错误在"pCurrentWin"这里,所以这个东东应该还要自己声明之类的,就是不知道要怎样对其进行声明!
追答
pCurrentWin应该是一个Form类型的变量,每次用户打开一个窗体的时候应该把打开的窗体赋值给这个变量,从而让代码可以在处理的时候得到当前的窗体,之后进行操作。

我认为应该是这样的
Form pCurrentWin = new Form();
这个变量应该是在主窗体里面命名的全局变量。不new也行,就是要小心空引用异常。
之后当每次Open一个窗体的时候需要先把要打开的窗体赋值给这个变量,例如:
pCurrentWin = 将要打开的窗体;
将要打开的窗体.Show();

同意21d801的见解,应该是个MDI窗体。

主要是猜测的,楼主要是要仔细分析。

同意21d801第二个见解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柴沛文00K
2011-08-09 · TA获得超过635个赞
知道小有建树答主
回答量:1203
采纳率:0%
帮助的人:187万
展开全部
I think pCurrentwin is form window definition. I bet there is window defintion for frmMain pCurrentWin is one of the component.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
占含佛I
2011-08-09
知道答主
回答量:31
采纳率:0%
帮助的人:12.9万
展开全部
就只有代码片段,不是很清楚结构啊,我猜测应该是个控件吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式