根据监视器分辨率调整gui元素的大小

时间:2016-02-17 08:17:57

标签: c# windows visual-studio resize

我正在开发一个C#应用程序,我遇到了这个问题:

现在,当我完成我的应用程序时,我尝试从不同的显示器使用它,我有重新调整大小的问题。我有组合框,列表视图,标签,按钮等。我尝试将它们向下,向上,向左等锚定。我通过将所有内容锚定在左边来获得最佳行为,因为我并不真正关心如何使其更大比起它,它看起来很好,即使在23'监视器,问题是当我尝试缩小低于它的原始大小时:

  • 表格开始缩小,滚动出现,所以我可以使用滚动看到所有表格(左 - 右,因为问题在于我的情况下的宽度)而且我不怎么想喜欢它的工作

  • 我希望出现的下一件事,当缩小它的原始尺寸时,表格中的每个项目都会变小,以便一切都适合

  • 自动缩放和自动调整对我没用,也许我没有好好使用它。

  • 锚定顶部,左侧,右侧,底部的功能,我将它们放在哪里可以很好地生长,但是当我收缩时,一切都在其他项目之上(它们叠加)

    < / LI>

所以,大家好,你有什么想法或解决方案,当我调整大小时,我怎么能得到漂亮的缩放?

2 个答案:

答案 0 :(得分:0)

WPF示例:

注意:代码未经过测试。它是如何在WPF应用程序中实现响应式UI的原型。

WPF应用程序包含一个MainWindow。这个mainwidows包含Pages,每个页面都是一个Screen。

namespace Example
{
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.SizeChanged += window_SizeChanged;
    }
    LoginScreen screen1= new LoginScreen)();
    private void Window_KeyDown(object sender, KeyEventArgs e)
    {           


    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        mainFrame.addPage(screen1);
    }

    private void setAppConfiguration()
    {

    }
    private void window_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        //Gets called when even windows size got changed. On each trigger we         are calling resize() on that respective screen.
        screen1.resize();
    }
}
}


<Window x:Class="Example.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:gif="http://wpfanimatedgif.codeplex.com"
     xmlns:toastinet="clr-namespace:ToastinetWPF;assembly=ToastinetWPF"
    Title="IGNITOR" Height="350" Width="525" Loaded="Window_Loaded" 
    Name="window"
WindowState="Maximized">
<Grid>
<Grid Name="maingrid" >
        <Grid Name="frameGrid"> 
            <Frame Name="mainFrame" />
        </Grid>                       
    </Grid>
</Grid>
</Window>




namespace Example.Screens
{
/// <summary>
/// Interaction logic for LoginPage.xaml
/// </summary>
public partial class LoginScreen : Page
{
    int count =0;
    public LoginScreen()
    {
        InitializeComponent();
    }

    public void resizePage()
    {
         //Put all yout UI Logic here on resize..
         errorlabel.Content = count + "";
         count++;
    }
}
}


<src:Page x:Class="Example.Screens"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:src="clr-namespace:Example.Screens"
  mc:Ignorable="d" 
  d:DesignHeight="600" d:DesignWidth="1200" Title="LoginPage">

<Grid>
    <Label Name="errorlabel" Content="Example"/>
</Grid>
</src:Page>

答案 1 :(得分:0)

问题解决了,应用程序并不是那么大,但是我试过的显示器已经很老了并且裁剪了图片,我试着从一台新笔记本电脑上试了一下它没关系,所以我不会如果我不在每种类型的显示器上工作(当上面的陈旧时),请小心。