【问题标题】:How to load a new layout in C# when a button is pressed?按下按钮时如何在 C# 中加载新布局?
【发布时间】:2012-10-19 14:28:37
【问题描述】:

我想在按下按钮时在 C# 中加载一个新布局(就像我们在 Android 编程中所做的 layout1.loadLayout() 一样)?

调用方法时如何执行此操作?

如果我的问题不清楚,我希望在单击按钮时加载一组新控件并将当前控件临时隐藏在窗口窗体上(同时它们应该保留其当前属性,这样如果我回去吧,它们应该和我离开它们的地方一样)。

如何在不完全删除和一次又一次创建它们的情况下在不同布局之间跳转?

【问题讨论】:

  • 您要加载新表单吗?它是桌面应用程序还是 Windows Phone 应用程序?
  • 您使用 WPF/Silverlight 还是 WinForms?
  • c# 没有任何意义,是 ASP.NET、Winforms、WPF、Silverlight 还是 Windows 商店应用程序?

标签: c# winforms layout


【解决方案1】:

如果这是针对桌面应用程序,请查看用户控件。

info here

【讨论】:

    【解决方案2】:

    您可以创建面板来对控件进行分组并切换其可见性。 在组件中查找面板控件,然后向其添加控件,调整其可见性。

    【讨论】:

    • 如果您使用 DataBinding,请谨慎使用这种方法,因为只有在实际显示控件时才会触发绑定。因此,例如,如果您在表单加载时隐藏的面板上有控件,则在面板实际可见之前不会发生数据绑定。
    • 这就是我为安卓应用程序编程时所做的。但我想知道这是否是做我想做的事情的正确方式,还是有更好、更有效的方式,但我不知道?
    • 我认为这是使用 win 表单时最简单的方法。如果您正在使用 WPF,请检查 stackoverflow.com/questions/910814/loading-xaml-at-runtime
    • 我这样做了: { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { panel1.Visible = true; panel2.Visible = false; } private void button1_Click(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = true;但是当我点击button1时,面板r没有被显示为desird。相反,我看到的是同一个面板 1. 有什么问题???
    • @user1759099 我认为您已在 panel1 中添加了 panel2(在设计视图中)。因此,当您调用 panel1.visible = false;它隐藏了 panel1,它也隐藏了 panel2(类似于添加到 panel1 的任何控件)。尝试将 panel2 移到 panel1 之外。要检查您是否在 panel1 中添加了 panel2,请尝试在设计视图中移动 panel1。它移动panel2,然后您在panel1中添加了panel2。
    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 2011-11-23
    • 2021-01-06
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2019-05-31
    相关资源
    最近更新 更多