Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于按钮单击更改面板/视图_C#_.net_Winforms_Panel - Fatal编程技术网

C# 基于按钮单击更改面板/视图

C# 基于按钮单击更改面板/视图,c#,.net,winforms,panel,C#,.net,Winforms,Panel,我想实现以下WinForms用户界面,顶部有两个按钮,允许用户在两个视图之间切换 因此,当我单击第一个按钮(“显示用户配置文件”)时,下面的三个面板将显示三个不同的用户配置文件(其中一些内容是从数据库获取的),如下所示 当我点击第二个按钮(“显示聊天记录”)时,下面的三个面板应该会显示三个不同的聊天记录(其中一些内容是从数据库中获取的),如下所示 在C#/.Net中实现这种结构的好方法(动态或静态)是什么?有没有比下面我粗略的方法更干净或至少更有效的方法: 为三个纵断面布置三组控件 为三个

我想实现以下WinForms用户界面,顶部有两个按钮,允许用户在两个视图之间切换

因此,当我单击第一个按钮(“显示用户配置文件”)时,下面的三个面板将显示三个不同的用户配置文件(其中一些内容是从数据库获取的),如下所示

当我点击第二个按钮(“显示聊天记录”)时,下面的三个面板应该会显示三个不同的聊天记录(其中一些内容是从数据库中获取的),如下所示

在C#/.Net中实现这种结构的好方法(动态或静态)是什么?有没有比下面我粗略的方法更干净或至少更有效的方法:

  • 为三个纵断面布置三组控件
  • 为三个聊天记录布局三组控件,重叠在 配置文件的控件
  • 根据按下的按钮更改控件的可见性
  • 例如,如果单击第一个按钮,则为所有与聊天历史相关的控件设置可见性=false,并为所有与用户配置文件相关的控件设置可见性=true

    • 选项卡控件将为您提供一组单独的面板。这是显而易见的方法,但如果你想覆盖面板并控制可见性,你可以,这很好。我有一个内容查看器,它根据内容的mime类型显示图像或文本,并且上下文切换在没有用户交互的情况下发生,因此将图像控件放在文本框的顶部并将其设置为可见(如果mime类型为image/jpeg)。如果用户要选择tho,我将使用选项卡控件

      我假设您正在使用可视化ui添加控件。您可以将一个选项卡控件拖动到窗体上,默认情况下,它应该显示为定义了两个选项卡。您可以在修改tabpages集合中添加更多属性。在这里,您还可以重命名它们以反映您的选择(个人资料、聊天)。将选项卡控件向上拖动到表单上所需的位置,并适当调整其大小,或将其停靠以填充表单。将3个面板拖动到第一个选项卡中,然后单击第二个选项卡,并在其中再拖动3个。那就照你说的去做吧。当用户单击聊天选项卡时,选项卡控件将管理视图-隐藏第一个选项卡及其3个面板。当然,单击第一个选项卡将使该选项卡页再次可见。您不需要编写任何代码

      我要补充的是,我不明白3个个人资料和3个聊天记录的设计。除非你的用户仅限于3个朋友。我认为你最好在个人资料页面上使用朋友姓名列表框,使用一个个人资料面板,根据选择的朋友填写个人资料控件,然后在聊天页面上使用相同的列表,使用一个聊天面板,根据选择的朋友将历史记录加载到文本框中。这样你就可以拥有你想要的所有朋友:)


      为了完整性,我将提出另一种方法,为什么用户必须在选项卡之间切换以查看用户配置文件或聊天历史记录,而您可以在单个选项卡页面中同时提供它们?您可以通过编程方式为每个用户创建一个新选项卡,在该选项卡上,其配置文件面板位于左侧,聊天历史记录位于右侧。更少的上下文切换=更好的用户体验。选项卡控件将允许您自动滚动查找不适合表单的选项卡(tm)

      与其在顶部用两个按钮切换多页窗格的视图,为什么不使用选项卡控件?是“选项卡控件”在整个表单之间切换,还是我可以让它在我自己定制的项目选择之间切换?选项卡控件将为您提供一组单独的面板。这是显而易见的方法,但如果你想覆盖面板并控制可见性,你可以,这很好。我有一个内容查看器,它根据内容的mime类型显示图像或文本,并且上下文切换在没有用户交互的情况下发生,因此将图像控件放在文本框的顶部并将其设置为可见(如果mime类型为image/jpeg)。当用户要选择tho时,我会使用选项卡控件。@John:我来试一试。也许你可以回答这个问题。是的,当然,你只需在每个选项卡中放置3个面板。我会添加一个带有标签tut的答案。你上面的评论更适合包含在你的答案中。因此,与其发表评论,不如编辑你的答案,并在其中包含你的想法。@John:谢谢你在UI中添加了额外的建议;给了我一些新的想法。我在问题中的例子只是一个例子,我认为这会使问题更容易提出。最终应用程序不仅仅是一个聊天/配置文件应用程序。另外,更新:我已经开始构建基于tabcontrol的布局,到目前为止似乎相当简单。下一步是动态/编程添加新的tabcontrols!很高兴能帮上忙。如果你被那篇文章困住了,还有一个问题!如果答案对你有用,别忘了接受它:)