【问题标题】:Let users to customise application interface (font, color...)?让用户自定义应用界面(字体、颜色...)?
【发布时间】:2013-08-24 10:23:48
【问题描述】:

我有一个用 C# 开发的带有 20 个表单的 Windows 应用程序。如何将用户选择的字体保存在数据库中并在应用程序中重新加载它,因为它适用于我项目中的所有表单作为默认表单、标签、文本框等?

其实我是想让用户自定义申请表格。

【问题讨论】:

    标签: c# sql visual-studio-2010 user-customization


    【解决方案1】:

    您不能将字体对象直接保存到数据库中。您可以创建一个函数将 Font 转换为 String 并返回,以便将字符串值保存到数据库中。

    在应用程序的外观设置对话框中,您可以进行所有需要的设置,只要在保存时调用 fontToString() 函数即可。然后(我假设您有一个要保存到的数据库,否则您可以使用 AppData 或 .NET 的 Properties.Settings.Default 功能)将您从函数中获得的字符串保存到数据库中。

    您还应该在公共静态类或易于访问的名为 updateFontInAllWindows() 的东西中实现一个函数,您可以在其中从数据库中查找设置并将它们应用于每个表单。这是一些示例代码(字体使用字体是您数据库查询的最终结果)。

    Font usefont = DatabaseHandler.GetFont();
    List<Form> formList = new List<Form>();
    formList.Add(Form1);
    formList.Add(Form2);
    foreach (Form frm in formList) {
       foreach (Control ctl in frm.Controls) {
           ctl.Font = usefont;
       }
    }
    

    此代码循环遍历每个表单中的每个控件并将字体应用到它。您也可以扩展它以使用其他设置,例如 BackgroundColor。请注意,您必须将每个要由用户设置自定义的表单添加到 formList 列表中。祝你好运!

    【讨论】:

    • 我应该在所有表单加载事件中调用此函数还是仅在我的应用程序的主表单中调用此函数?或者我可以做一些事情,比如将对象属性绑定到它
    • 我不建议在表单上使用属性绑定,因为这样您可以更全面地控制选项集。你应该只在启动时调用这个函数一次,只要你准备好了(在初始化数据库或你需要做的任何事情之后)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2014-12-15
    相关资源
    最近更新 更多