帮忙看一段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 是什么意思?怎么定义的? 展开
{
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 是什么意思?怎么定义的? 展开
展开全部
下面引用了一部分别人提问的代码,从名字就能猜到函数的作用,变量名带个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
另外回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
展开全部
应该是当前的窗体,这个循环的意思应该是得到当前窗体的一个叫做dockPanel的Panel控件里面所有的内容,之后找到其中一个内容的属性TabText与传入的参数一致的就激活这个内容,之后返回true,如果找不到就返回false。
我感觉这个代码的意思就是找到当前窗体里面的Tab控件,之后发送一个要打开的Tab窗口的名字,之后程序打开相应的Tab窗口。
从你的代码里面只能分析道这么多了,八九不离十。
楼上说的不太准确,不是判断打开,而是要打开。
我感觉这个代码的意思就是找到当前窗体里面的Tab控件,之后发送一个要打开的Tab窗口的名字,之后程序打开相应的Tab窗口。
从你的代码里面只能分析道这么多了,八九不离十。
楼上说的不太准确,不是判断打开,而是要打开。
追问
跟你说的差不多!
问题是运行起来提示错误在"pCurrentWin"这里,所以这个东东应该还要自己声明之类的,就是不知道要怎样对其进行声明!
追答
pCurrentWin应该是一个Form类型的变量,每次用户打开一个窗体的时候应该把打开的窗体赋值给这个变量,从而让代码可以在处理的时候得到当前的窗体,之后进行操作。
我认为应该是这样的
Form pCurrentWin = new Form();
这个变量应该是在主窗体里面命名的全局变量。不new也行,就是要小心空引用异常。
之后当每次Open一个窗体的时候需要先把要打开的窗体赋值给这个变量,例如:
pCurrentWin = 将要打开的窗体;
将要打开的窗体.Show();
同意21d801的见解,应该是个MDI窗体。
主要是猜测的,楼主要是要仔细分析。
同意21d801第二个见解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
I think pCurrentwin is form window definition. I bet there is window defintion for frmMain pCurrentWin is one of the component.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就只有代码片段,不是很清楚结构啊,我猜测应该是个控件吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询