Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据监视器分辨率调整gui元素的大小_C#_Windows_Visual Studio_Resize - Fatal编程技术网

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

C# 根据监视器分辨率调整gui元素的大小,c#,windows,visual-studio,resize,C#,Windows,Visual Studio,Resize,我正在开发一个C#应用程序,我遇到了以下问题: 现在,当我完成我的应用程序时,我尝试从不同的显示器上使用它,但我遇到了重新调整大小的问题。我有分组框、列表视图、标签、按钮等。我尝试将它们向下、向上、向左等固定。。我得到的最好的表现是将所有东西都固定在左边,因为我并不真正关心使它变大,它看起来很好,即使在23英寸的显示器上有一个最大化,问题是当我尝试缩小到低于其原始尺寸时: 表单开始收缩,滚动条出现,这样我就可以看到所有使用滚动条的表单(右-左,因为我的问题是宽度),这不是我希望它的工作方式 接

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

现在,当我完成我的应用程序时,我尝试从不同的显示器上使用它,但我遇到了重新调整大小的问题。我有分组框、列表视图、标签、按钮等。我尝试将它们向下、向上、向左等固定。。我得到的最好的表现是将所有东西都固定在左边,因为我并不真正关心使它变大,它看起来很好,即使在23英寸的显示器上有一个最大化,问题是当我尝试缩小到低于其原始尺寸时:

  • 表单开始收缩,滚动条出现,这样我就可以看到所有使用滚动条的表单(右-左,因为我的问题是宽度),这不是我希望它的工作方式

  • 接下来我想展示的是,当a缩小到比它原来的尺寸小的时候,表格中的每一项都会变小,这样所有的东西都能放进去

  • 自动缩放和自动调整大小对我不起作用,也许我没有很好地使用它

  • 将顶部、左侧、右侧和底部固定在我将它们放在哪里的功能中,在生长时效果很好,但在收缩时,所有东西都位于其他项目的顶部(它们重叠)

那么,伙计们,你们有什么想法或解决方案,当我调整大小时,我如何才能获得如此漂亮的缩放效果?

WPF示例:

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

WPF应用程序包含一个主窗口。此mainwidows包含多个页面,其中每个页面都是一个屏幕

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>
名称空间示例
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.SizeChanged+=窗口_SizeChanged;
}
LoginsScreen Screen 1=新的LoginsScreen)();
私有无效窗口\u KeyDown(对象发送方,KeyEventArgs e)
{           
}
已加载私有无效窗口(对象发送器、路由目标)
{
mainFrame.addPage(屏幕1);
}
私有void setAppConfiguration()
{
}
私有无效窗口\u SizeChanged(对象发送方,SizeChangedEventArgs e)
{
//在更改windows大小时调用。在每个触发器上,我们在相应的屏幕上调用resize()。
屏幕1.调整大小();
}
}
}
名称空间示例。屏幕
{
/// 
///LoginPage.xaml的交互逻辑
/// 
公共部分类登录屏幕:第页
{
整数计数=0;
公共登录屏幕()
{
初始化组件();
}
public void resizePage()
{
//将所有yout UI逻辑放在resize上。。
errorlabel.Content=count+“”;
计数++;
}
}
}
WPF示例:

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

WPF应用程序包含一个主窗口。此mainwidows包含多个页面,其中每个页面都是一个屏幕

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>
名称空间示例
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.SizeChanged+=窗口_SizeChanged;
}
LoginsScreen Screen 1=新的LoginsScreen)();
私有无效窗口\u KeyDown(对象发送方,KeyEventArgs e)
{           
}
已加载私有无效窗口(对象发送器、路由目标)
{
mainFrame.addPage(屏幕1);
}
私有void setAppConfiguration()
{
}
私有无效窗口\u SizeChanged(对象发送方,SizeChangedEventArgs e)
{
//在更改windows大小时调用。在每个触发器上,我们在相应的屏幕上调用resize()。
屏幕1.调整大小();
}
}
}
名称空间示例。屏幕
{
/// 
///LoginPage.xaml的交互逻辑
/// 
公共部分类登录屏幕:第页
{
整数计数=0;
公共登录屏幕()
{
初始化组件();
}
public void resizePage()
{
//将所有yout UI逻辑放在resize上。。
errorlabel.Content=count+“”;
计数++;
}
}
}

问题解决了,应用程序没那么大,但我试过的显示器太旧了,截图了,我试过用一台更新的笔记本电脑,没问题,所以我不在乎我是否在每种显示器上工作(当上面的显示器很旧时)

问题解决了,应用程序没那么大,但是我试过的显示器是旧的,并且裁剪了图片,我试过用一台更新的笔记本电脑,没关系,所以我不在乎我是否在每种显示器上工作(当上面的显示器是旧的时候)

可能包括一些代码,因为你现在的问题非常广泛。我想这是一个WinForms应用程序。应该是WinForms。。。因为使用WPF您不会遇到这样的问题:)可能会包含一些代码,因为您现在的问题非常广泛。我猜这是一个WinForms应用程序。应该是WinForms。。。因为使用WPF不会遇到这样的问题:)