DevExpress+Winfrom使用HTML+CSS创建个性化界面

前言

最近在尝试学习DevExpress控件库来提高自己的桌面程序编程水平(包括界面审美水平,毕竟使用原生的winfrom设计出来的程序界面还是蛮单调的),在学习DevExpress Demo期间发现他能通过HTML+CSS设计出像网页程序一样相当漂亮的界面,遂迫不及待想学习此技术来提升自己,顺便记录一下过程,看能否帮到其他想学习或正在学习此控件的小伙伴。

结论

先说结论,创建DirectX From确实能通过修改HtmlTemplate来实现界面的个性化设计,但限制较多,个人看来属于吃力不讨好的鸡肋功能,毕竟在时间开发中不可能在界面设计上耗费大量时间精力。

使用限制

我使用的DevExpress版本为23.1.4.0,在使用DirectX From加上我在网络上下载的前端模板来实现界面个性化设计的过程发现其以下限制

  1. HtmlTemplate Editor 无法识别个别节点(如<from>表单,因为我下载的模板是登录模板),导致界面无法正常显示
  2. HTML编辑器必须包含id为frame 和 content的节点,否则提示(Invalid Htmlremplate),无法显示内容(我当时就是把模板的HTML内容部分直接拷贝上去,就直接报错)
  3. CSS编辑内容无法识别CSS动画。

等于说是纯HTML+CSS来渲染界面,还需要相关参数设置,传参,图片添加到集合,再到HTML里头去取出来,然后还有数据传递需要编写后台事件等,想完成一个完整界面工作量还是挺大的。光是HTML+CSS这部分就劝退我,不能直接套模板,对于一个前端知识不太行的我来说这太难了。

具体操作

不管怎么说,多会一点设计方式,还是很不错的,技多不压身,下面开始讲具体如何操作。

  • 在visual studio 新建一个DevExpress v23,1 WinForms App Template Gallery项目
  • 在选择窗体时选择DirectX From,如图
  • 找到新建窗体的HtmlTemplate属性,点击进入htmlTemplate编辑器,如下图
  • 在DevExpress内置的模板库中随意选择了一个模板,但是无法正常显示模板样式,这便是因为限制中的第2点,缺少id
  • 将id-frame 和content 补齐,效果如图

后续只需将html内{xxx}的参数按照名称一一对应绑定即可。


20240702更新

因打算使用DevExpress重构刚毕业使用原生Winfrom编写的桌面程序(实在是太丑了),打算使用DirectXForm升级一下之前写的软件的登录界面,让它更好看点,正好更新一下此博客。

先看原来的登录界面,是不是看起来不怎么好看

然后我百度搜索了html+css登录模板,然后AI直接给我示例了一个模板,将其复制到txt,更改拓展名为html查看,感觉还不错,便决定就用它了。HTML代码如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
<style>
  body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
  }
  .login-container {
    width: 300px;
    padding: 40px;
    background-color: #fff;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  }
  .login-container h2 {
    text-align: center;
    margin-bottom: 20px;
  }
  .form-group {
    margin-bottom: 15px;
  }
  .form-group label {
    display: block;
    margin-bottom: 5px;
  }
  .form-group input[type="text"],
  .form-group input[type="password"] {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box; /* Makes sure the padding does not affect the total width of the input */
  }
  .form-group input[type="submit"] {
    width: 100%;
    padding: 10px;
    border: none;
    border-radius: 4px;
    background-color: #5cb85c;
    color: white;
    cursor: pointer;
  }
  .form-group input[type="submit"]:hover {
    background-color: #4cae4c;
  }
</style>
</head>
<body>
 
<div class="login-container">
  <h2>Login</h2>
  <form action="">
    <div class="form-group">
      <label for="username">Username:</label>
      <input type="text" id="username" name="username" required>
    </div>
    <div class="form-group">
      <label for="password">Password:</label>
      <input type="password" id="password" name="password" required>
    </div>
    <div class="form-group">
      <input type="submit" value="Login">
    </div>
  </form>
</div>
 
</body>
</html>

效果图如下


开始操作

1.新建DXForm然后选择当前窗体,更改它的HTMLTemplate属性。更改时你会看到原来的Form格式模板,如果想保留窗体的特征也可省略此步骤

<dx-form-frame id="frame">
    <dx-form-titlebar id="titlebar">
        <dx-form-icon id="icon"></dx-form-icon>
        <dx-form-text id="text"></dx-form-text>
        <dx-form-minimizebutton id="minimizebutton"></dx-form-minimizebutton>
        <dx-form-maximizebutton id="maximizebutton"></dx-form-maximizebutton>
        <dx-form-closebutton id="closebutton"></dx-form-closebutton>
    </dx-form-titlebar>
    <dx-form-content id="content"></dx-form-content>
</dx-form-frame>

以上代码块中的每一个Id都是框架唯一的,如果在我们使用时重复了上面的Id就会报错

2.在左侧工具栏搜索HtmlContentControl并将它添加到directXFormContainerControl中,将其大小设置合适

3.选中HtmlContentControl 更改它的HTMLTemplate属性,直接复制上面的HTML代码,有一些标签DevExpress不认,因此我们需要改一改,具体代码和图例如下。

HTML

<div class="login-container">
  <h2>Welcome</h2>
  <div>
    <div class="form-group-textbox">
      <input class="input" value='${Username}' name="username" >
    </div>
    <div class="form-group-textbox">
      <input class="input" value='${Password}' name="password">
    </div>
    <div class="form-group-loginBtn">
     	Login
    </div>
  </div>
</div>

CSS

 body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    width: 100%;
    margin: 0;
  }
  .login-container {
    width: 320px;
    padding: 60px;
    background-color: #fff;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  }
  .login-container h2 {
    text-align: center;
    margin-bottom: 20px;
  }
  .form-group {
    margin-bottom: 15px;
  }

.input {
	flex-grow: 1;
	width: 100%;
	background-color: @Window;
}

  .form-group-textbox,
  .form-group-textbox {
 	margin-bottom: 15px;
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
  
  }
  .form-group-loginBtn {
    width: 100%;
    padding: 10px;
    border: none;
    border-radius: 4px;
    background-color: #5cb85c;
    color: white;
    font-size: 18px;
  	text-align: center;
    cursor: pointer;
  }
  .form-group:hover {
    background-color: #4cae4c;
  }

完整效果图

4.选中效果图中框起来的部分,为模板添加Textbox控件,控件名称要与HTML中占位符相匹配,可通过一下属性更改控件的样式,添加空白时水印文字。箭头处可以更换其他控件

至此基本完成了界面设计,运行一下看看实图,还不错

关于Winfrom边框,可以在DX的HTMLTemplate自己设计,也可以考虑使用无边框的Winfrom,可自由设计。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForms 是一种用于创建 Windows 桌面应用程序的技术,DevExpress 则是一个为 .NET 平台提供控件和工具的开发工具箱。下面是一个简单的教程,介绍如何在 WinForms 中使用 DevExpress 控件: 1. 下载并安装 DevExpress 工具包:首先,你需要从 DevExpress 官方网站下载并安装 DevExpress 工具包。在安装过程中,你可以选择安装哪些控件和工具。 2. 创建一个新的 WinForms 项目:打开 Visual Studio,选择 "创建新项目",在模板列表中找到 "Windows Forms App (.NET Framework)",并创建一个新的 WinForms 项目。 3. 引用 DevExpress 控件:在 Visual Studio 中,右键单击项目,并选择 "管理 NuGet 程序包"。在 NuGet 程序包管理器中,搜索并安装 DevExpress 控件。 4. 添加 DevExpress 控件到窗体:打开窗体设计器,从工具箱中拖拽所需的 DevExpress 控件到窗体上。你可以通过在工具箱中选择 "DevExpress" 选项卡来查找和选择控件。 5. 配置控件属性:选中添加到窗体上的控件,通过属性窗口设置控件的属性,如大小、位置、样式等。 6. 编写代码逻辑:双击控件或者窗体来打开代码编辑器,在相应事件的处理程序中编写代码逻辑。 7. 调试和运行:编写完代码后,通过调试和运行你的应用程序,查看控件是否按预期工作。 这只是一个简单的教程,帮助你开始使用 DevExpress 控件。DevExpress 提供了详细的文档和示例代码,以供进一步学习和探索。你可以访问 DevExpress 官方网站,以获取更多关于控件的教程、文档和支持资源。希望这对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值