关于c#:如何在WinForms中实现丰富的UI? | 珊瑚贝

How to implement a Rich UI in WinForms?


我想为我的桌面应用程序创建一个丰富的 UI,但是 WPF 对我的需求来说太复杂了,我更喜欢使用 WinForms(如果可能的话)。在我看来,有两种选择:

  • WinForms 和大量的自定义控件,包括自定义绘图:这会给我提供细粒度的控制,但是,UI 编码太硬,并且会使重新设计(甚至是初始实现)成为一件漫长而乏味的事情。

  • WebBrowser 控件中的 HTML5 UI:我非常倾向于这个选项,因为界面可以很容易地(重新)设计,并且实现需要的代码更改最少。话虽如此,我没有这方面的经验,也不知道我可能遇到的潜在问题。

  • 你们怎么看?还有其他建议吗?我还没有完全排除 WPF,如果 WinForms 出了,那么 WPF vs WebBrowser Control 怎么样?

    Design

    • 如果它真的是一个桌面应用程序,你真的应该尝试一下 WPF。开始可能会很棘手,但与使用浏览器控件相比,您的结果将不会那么麻烦和痛苦。如果您使用 Web 浏览器路线,请知道有比 WebBrowser 控件更好的选择。请参阅 stackoverflow.com/questions/1495944/…。无论如何,如果我是你,我会忘记 Winforms。
    • 第三方组件也可能就足够了,具体取决于您的特定需求(Telerik、DevExpress、…)
    • @Saragis 感谢您的链接!
    • 想知道你最终选择了什么?


    对于桌面应用程序,WPF 无疑是最佳选择,因为它提供了使用 Style 和 ControlTemplate 完全重新设计控件的能力。

    以桌面版 Skype 为例。据我所知,它实际上是一个基于 XAML 的桌面应用程序 (WPF),这意味着设计丰富、漂亮的应用程序当然是可能的,因为它已经完成了。 Visual Studio 也是基于 XAML 的应用程序的一个很好的例子。

    在您的情况下,我建议您在定位桌面时使用 WPF 路线。已经创建了许多非常棒的框架来帮助您的应用程序看起来更棒,例如 MahApps 和 MUI,它们都试图实现 Windows 8 应用程序的现代感。

    这些框架的本质是实现 Styles 和 ControlTemplates 来覆盖现有控件的默认样式和模板。我确定加入了新的控件,但本质仍然保持不变。

    以Button 为例,使用Style 或ControlTemplate 很容易改变按钮在窗口上的显示方式。例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Style TargetType=“Button”>
        <Setter Property=“Background” Value=“Red”/>
        <Setter Property=“Template”>
            <Setter.Value>
                <ControlTemplate TargetType=“Button”>
                    <Border BorderThickness=“0”
                            Background=“{TemplateBinding Background}”>
                        <ContentPresenter Margin=“20,10”/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    在这个非常简单的示例中,我只是更改了默认的 Button 样式并更改了它的呈现方式,以显示红色 Border 内的按钮内容。这不是很复杂,但是你有很大的自由度,你几乎可以做任何你真正喜欢的事情。

    我听说过使用 WPF 构建的游戏,显然不是 AAA 游戏,而是相对简单的桌面游戏,但是它们使用与我提到的相同的原则来设计控件以满足他们的需求。

    一旦你了解了如何重新设计控件,那么可能性实际上是无穷无尽的,如果你正在寻找设计灵感,那就看看 dribbble。


    来源:https://www.codenong.com/31739197/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9000.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?