c# - 从配置文件 C# (WinForms) 激活/停用按钮

标签 c# winforms button configuration

假设我的程序最多有 8 个按钮,我应该能够根据配置文件中的设置打开/关闭它们(可见/隐藏)。 然后,我选择的按钮应该在两行(如果超过 4 个)或一行(cnt <= 4)中可见,在它们之间没有间隙。(我的意思是当 1,2,3,4 处于事件状态时,它们将是在第一行中,相同的 1、2、5、8 处于事件状态,因此 5 将取代按钮 3,而 8 将排在第四位)

<add key="butactive" value="1;3;4;8"/>
<add key="but1" value="START"/>
<add key="but2" value="END"/>
<add key="but3" value="PAUSE"/>
<add key="but4" value="RESET"/>
...

程序应该能够根据“butactive”键确定哪些按钮是可见的,然后更改它们的 Text 属性并添加同样从配置文件中获取的特定操作。

 private void Form2_Load(object sender, EventArgs e)
 {
     radButton1.Text = ConfigurationManager.AppSettings["but1"];
     radButton2.Text = ConfigurationManager.AppSettings["but2"];
     radButton3.Text = ConfigurationManager.AppSettings["but3"];
     radButton4.Text = ConfigurationManager.AppSettings["but4"];
     ...
     radButton1.Click += getAction(ConfigurationManager.AppSettings["but1a"]);
     radButton2.Click += getAction(ConfigurationManager.AppSettings["but2a"]);
     ...
 }

知道如何在加载表单时选择所需的按钮并将它们放置在所需的位置吗?

最佳答案

您可以使用 FlowLayoutPanel作为按钮的容器。如果你正确调整了它的大小,你需要做的就是设置按钮的可见性,它们会根据你的需要自行排列:

radButton1.Visible = (bool)ConfigurationManager.AppSettings["butactive1"];
radButton2.Visible = (boll)ConfigurationManager.AppSettings["butactive2"];
...

至于操作,您可以对所有按钮使用相同的事件处理程序,并根据按下的按钮和您定义的操作执行您需要的任何操作:

radButton1.Click += buttonClickHandler;
radButton2.Click += buttonClickHandler;

private void buttonClickHandler(object sender, EventArgs e)
{
    var button = sender as Button;
    var action = getAction(ConfigurationManager.AppSettings[button.Text + "a"];

    //Execute whatever you want here based on action
}

关于c# - 从配置文件 C# (WinForms) 激活/停用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872639/

相关文章:

winforms - 当值为零时覆盖 Windows.Forms.NumericUpDown 中显示的文本

c# - 基于模板打开 Excel 副本

css - 按钮的背景不与垂直菜单中的阴影对齐

javascript - 为什么我的按钮对 php 和 javascript 不起作用,而我的其他按钮却起作用?

java - 与平面 if 语句相比,嵌套 if 语句是否可以提高性能或具有其他优势?

c# - AppDomain 和 MarshalByRefObject 生命周期 : how to avoid RemotingException?

c# - 如何获取 XNA 游戏屏幕上的窗口位置?

android - 我如何使用按钮在应用程序中制作多个页面,并使图像按钮链接到这些页面?

c# - 从 try...catch 返回 null 的方法

c# - 使用 GMap.NET 显示流量