首页 > 代码库 > D23_01_Window类 RegistryKey Rect
D23_01_Window类 RegistryKey Rect
<Window x:Class="demo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <StackPanel Margin="5"> <Button Margin="2" Click="showWindow">Show Window</Button> <Button Margin="2" Click="Button_Click">Close Me</Button> <Button Margin="2" Click="Button_Click_1">Center Me</Button> <Button Margin="2" Click="Button_Click_2">Save Position and Size(配置文件方式)</Button> <Button Margin="2" Click="Button_Click_3">Restore Position and Size(注册表方式)</Button> </StackPanel></Window>
MainWindow(窗体类)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace demo{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void showWindow(object sender, RoutedEventArgs e) { TaskWindow winTask = new TaskWindow(); //ShowDialog()表示以模态方式打开,必须关闭此窗口后才能操作其他窗口 winTask.ShowDialog(); } private void Button_Click(object sender, RoutedEventArgs e) { this.Close(); } //设置窗口位置为工作区的中央 private void Button_Click_1(object sender, RoutedEventArgs e) { double screenHeight = SystemParameters.WorkArea.Height; double screenWidth = SystemParameters.WorkArea.Width; this.Top = (screenHeight - this.Height) / 2; this.Left = (screenWidth - this.Width) / 2; } private void Button_Click_2(object sender, RoutedEventArgs e) { //WindowPositionHelper(注册表的方式保存窗体的位置和大小) //WindowPositionHelperConfig(配置文件的方式保存窗体的位置和大小) WindowPositionHelper.SaveSize(this); } private void Button_Click_3(object sender, RoutedEventArgs e) { //WindowPositionHelper(注册表的方式保存窗体的位置和大小) //WindowPositionHelperConfig(配置文件的方式保存窗体的位置和大小) WindowPositionHelper.SetSize(this); } }}
WindowPositionHelper
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using Microsoft.Win32;namespace demo{ //WindowPositionHelper(注册表的方式保存窗体的位置和大小) public class WindowPositionHelper { public static string RegPath = @"Software\MyApp"; public static void SaveSize(Window win) { RegistryKey key; key = Registry.CurrentUser.CreateSubKey(RegPath + win.Name); key.SetValue("Bounds", win.RestoreBounds.ToString(System.Globalization.CultureInfo.InvariantCulture)); } public static void SetSize(Window win) { RegistryKey key; key = Registry.CurrentUser.OpenSubKey(RegPath + win.Name); if (key != null) { Rect rect = Rect.Parse(key.GetValue("Bounds").ToString()); win.Top = rect.Top; win.Left = rect.Left; if (win.SizeToContent == SizeToContent.Manual) { win.Width = rect.Width; win.Height = rect.Height; } } } } //WindowPositionHelperConfig(配置文件的方式保存窗体的位置和大小) public class WindowPositionHelperConfig { public static void SaveSize(Window win) { Properties.Settings.Default.WindowPosition = win.RestoreBounds; Properties.Settings.Default.Save(); } public static void SetSize(Window win) { Rect rect = Properties.Settings.Default.WindowPosition; win.Top = rect.Top; win.Left = rect.Left; if (win.SizeToContent == SizeToContent.Manual) { win.Width = rect.Width; win.Height = rect.Height; } } }}
D23_01_Window类 RegistryKey Rect
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。