2011-09-24 71 views
0

我想创建一个包含2个面板的窗体,其中左面板包含链接。点击链接时,相应的表单应在右侧区域打开,并应在单击另一个链接时刷新并显示该表单。我想在c#windows应用程序中执行此操作。我该怎么做?如何在c#窗口应用程序中添加导航链接

+2

你有什么问题,当你试过吗? –

+0

右侧面板在点击第二个链接时未刷新,右侧面板内容不变。 – pavan

+0

显示问题的一个小例子 –

回答

0

您应该使用LinkLabel控制并创建MDI以打开/显示子女forms

+0

右侧面板在单击第二个链接时未刷新,右侧面板内容不变。 – pavan

0

您是否尝试过使用在c#中使用的自定义属性来打开新窗体,请在此处尝试。使用链接按钮。

+0

右侧面板在点击第二个链接时没有刷新,右侧面板内容不变。 – pavan

+0

您已经定义了所有的控件。如果没有,那么你可以轻松地重新绘制所有的控制点击链接按钮。 http://en.csharp-online.net/Panel – user909058

1

至于@AVD提出了链接,您应该使用LinkLabel但为了在“正确”或任何其它指定的面板中打开表单,您必须窗体的父手柄设置为包含面板的手柄。

因此可以说你有两个面板,splitContainer1.LeftPanelsplitContainer1.RightPanel。在左侧面板中,您有LinkLabelLinkClicked事件。现在为了打开splitContainer1.RightPanel表单时被点击LinkLabel,实例形式的对象,调用运API方法SetParent()设置父句柄,然后调用Form.Show()方法splitContainer1.RightPanel

//Declare a WinAPI method 
[DllImport("user32.dll", SetLastError = true)] 
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

//Inside LinkClicked event 
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
     Form1 f = new Form1(); 
     SetParent(f.Handle, splitContainer1.Panel2.Handle); 
     f.Show(); 
} 

打开它编辑:一种解决方法来关闭任何现有的形式在面板上打开一个新的 不是最好的,但最简单的方法前关闭现有的形式:

Form currentForm = null; 
private void CloseCurrentForm() 
{ 
    if(currentForm != null) 
     currentForm.Close(); 
} 

,并在每LinkClicked事件打开新的Form这样之前调用此方法,不要忘记设置currentForm

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
     CloseCurrentForm(); 
     Form2 f = new Form2(); 
     SetParent(f.Handle, splitContainer1.Panel2.Handle); 
     currentForm = f; 
     f.Show(); 
} 
+0

实际上,如果我这样做,然后一个新的窗口重叠在前面的右侧面板,但我希望旧的窗体应该隐藏和新的应该只显示,应该没有重叠的形式一个在另一个之上。 – pavan

+0

请检查我的更新asnwer请 – Waqas

+0

如何从分隔容器面板右侧面板中的窗体打开弹出窗体,而不是在窗体外面。 – pavan

1

对于你的问题,你可以使用Panel控件。和用户控制。首先创建UserControl,然后将其添加到面板容器中。 UserControls有助于重用,并且更容易重用。

步骤做

  1. 创建用户控制和设计它accoriding您的需要
  2. 将面板控制
  3. 装入用户控件对象面板和显示它

对于例如。

U将一个链接标签或图像或按钮放在窗体左侧,右侧放置内容面板。

当u单击了LinkLabel的执行下列操作

Protected void LinkLabel_Click() 
{ 
UserControl1 UserObj =new UserControl1(); // UserControl which u want to display 

panel1.controls.Clear(); 
Panel1.Controls.Add(userobj);  //Adding the control to Panel Container. 
} 
相关问题