0

我正在使用 WPF、C#、SQLCE、VS 2010 开发 POS 应用程序。我创建了一个带有 800 * 600 宽度和高度的固定窗口的账单输入表单。

但是项目中的其他窗口可以使用系统分辨率。现在我想在我的 POS 应用程序中打开此账单输入表单时将系统分辨率更改为 800*600。对于库存和库存的报告和维护,我使用了丰富的 UI 控件,窗口大小最大化,但对于 BILL ENTRY FORM(考虑到我的需要),我将其窗口大小保持为 800*600。当我打开表格时,它在 1440*900 分辨率下看起来非常小。所以我想在这个窗口打开时将系统分辨率更改为 800*600,当这个窗口关闭时它应该返回到 1400*900 分辨率.. 有什么办法可以做到这一点

4

2 回答 2

4

您无需更改桌面分辨率。WPF 与分辨率无关,可以按您需要的方式缩放所有内容。它看起来也会好很多。

对于简单的缩放,您可以使用 Viewbox 类:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplication1.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="800" Height="600">
    <Viewbox>
        <ListView Height="150" Width="200">
            <ListViewItem>item 1</ListViewItem>
            <ListViewItem>item 2</ListViewItem>
        </ListView>
    </Viewbox>
</Window>

它会自动将里面的任何东西缩放到任何可用的大小:

小的

中间

大的

于 2011-01-13T10:34:28.530 回答
2

以编程方式更改用户的设置不是一个好习惯 - 相反,您应该向用户显示一条消息,要求他们自己更改屏幕分辨率。如果您确实需要特定的重新解决方案,您可以取消应用程序加载,直到他们将其更改为所需的设置。

我强烈建议不要这样做

但是对于你的问题......使用ChangeDisplaySettingsExGDI 中的这个函数(不容易,但没有内置的 C# 函数)看看这里http://msdn.microsoft.com/en-us/library/dd183413%28VS.85 %29.aspx

您需要执行 DLL 导入 "User32.dll"才能使用此功能。

于 2011-01-13T10:24:09.613 回答