精华内容
下载资源
问答
  • WPFWindows窗体 安装 有两个可用的软件包,一个用于WPF,一个用于Windows窗体。 您可以安装与您的程序使用的GUI技术相对应的软件。 WPF dotnet add package DarkNet - WPF 在NuGet上查看DarkNet-WPF Windows...
  • CefSharp提供WPF和WinForms Web浏览器控件实现。 CefSharp已获得许可,因此可以在专有免费/开源应用程序中使用。 有关完整的详细信息,请参见文件。 如果您喜欢并使用CefSharp,请考虑注册一个小额的每月捐款,...
  • 有一个简单的问题吗? Jump on CefSharp允许您将Chromium嵌入.NET应用程序中。...CefSharp提供WPF和WinForms Web浏览器控件实现。 CefSharp已获得BSD许可,因此可以在专有免费/开源应用程序中使用
  • CefSharp提供WPF和WinForms Web浏览器控件实现。 CefSharp已获得许可,因此可以在专有免费/开源应用程序中使用。 有关完整的详细信息,请参见文件。 如果您喜欢并使用CefSharp,请考虑注册少量的每月捐款,即使...
  • WINDOWS窗体应用程序与WPF应用程序的区别? 用WPF更容易做的漂亮 感觉有以下几个大区别WPF的线程模型winform的线程模型不同 WPF到处用到数据绑定,winform在列表中才用的多 WPF支持3D,winform本身没有,...

    WINDOWS窗体应用程序与WPF应用程序的区别?

    用WPF更容易做的漂亮

    感觉有以下几个大区别:

    WPF的线程模型和winform的线程模型不同

    WPF到处用到数据绑定,winform在列表中才用的多

    WPF支持3D,winform本身没有,需要引入托管的DX

    WPF有现成的动画机制,winform没有

    WPF的界面可以用XAML写,后台逻辑用C#,winform全部C#。也就是WPF真正做到界面与逻辑分离。

     

    WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性:
    解决Window Handle问题 

    在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或"Error Create Window handle",而导致程序退出。
      
    WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。
    多线程的处理

    Dependency Property
      
    在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。
        
    总的来说,我觉得WPF应该是GUI发展的一个延续,原来GUI中复杂的东西,现在通过简单的文本就可以实现。

    转自:http://blog.sina.com.cn/s/blog_6372cc4801011qff.html

    展开全文
  • 现在纠结到底是使用WPF还是使用windows窗体应用程序。 肯定大神帮忙推荐下,最好说明理由,不胜感激。 主要考虑如下因素: * 上手的难易程度 * 自己编写的代码量——机器生成的代码不算 * 流行趋势——别刚学...
  • 大家在使用C#进行编程时,总会遇到,一些实时显示刷新时间的项目,但是呢许多刚接触C#的小白简直是噩梦,尤其使用WPF时,又没有Timer控件好不容易找到了显示时间代码,发现只能显示一次最新读取的时间,接下来就不多...

            大家在使用C#进行编程时,总会遇到,一些实时显示刷新时间的项目,但是呢许多刚接触C#的小白简直是噩梦,尤其使用WPF时,又没有Timer控件好不容易找到了显示时间代码,发现只能显示一次最新读取的时间,接下来就不多说废话了,代码上手。

    1.  WPF版本

           创建项目后直接粘贴复制即可适用于小白,如果是借鉴直接看下方后端代码即可。切忌如果是粘贴复制的话一定要注意namespace是不是和你创建项目的名称是一样的,如果不一样切换成你创建项目的名称即可。

     详细代码如下:

    <Window x:Class="WpfApp1.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">
        <Grid>
            <TextBox x:Name="Timer1" HorizontalAlignment="Left" Height="85" Margin="102,107,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="311" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="18"/>
        </Grid>
    </Window>
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    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;
    using System.Windows.Threading;
     
    namespace WpfApp1
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            long _start;
            public MainWindow()
            {
                InitializeComponent();
    
                DispatcherTimer timer = new DispatcherTimer();  
                _start = Environment.TickCount;
                timer.Tick += timer_Tick;
                timer.IsEnabled = true;
            }
    
            void timer_Tick(object sender, EventArgs e)
            {
                Timer1.Text = DateTime.Now.ToString("yyyy-dd-MM HH:mm:ss");
            }
        }
    }

    效果如下:

    2. Windows窗体   窗体程序就比较简单了,创建好项目后先从工具箱拖拽一个TextBox,命名为Timer123,然后从工具箱拖拽一个timer的控件,在右下角的属性栏中进行修改2个属性(Enable设置为True;Interval设置为1000(代表一秒))。

     

     双击你创建的timer,添加命令            this.Timer123.Text = DateTime.Now.ToString();

    详细代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                this.Timer123.Text = DateTime.Now.ToString();
            }
        }
    }
    

    效果如下:

    3. 控制台应用 也比较简单创建如下项目

    别忘了修改名称代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                System.Timers.Timer t = new System.Timers.Timer();
                t.Interval = 1000;
                t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
                t.Start();
                Console.ReadKey();
            }
            static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                Console.Write("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
                Console.Write(DateTime.Now.ToString("yyyy-dd-MM HH:mm:ss"));
            }
        }
    }
    

    效果如下:

     以下就是显示时间的三种方式了,比较简单,也希望可以帮助到大家。

    展开全文
  • 本文演示了一种在Windows Form应用程序中承载WPF控件的简便方法。
  • NHotkey, 在 Windows 窗体和WPF应用程序中,管理全局热键的托管库 NHotkey即使你的WPF或者WinForms应用程序没有焦点,也轻松处理快捷键。 用熟悉的KeyBinding 语法声明XAML中的热键。Nuget软件包:对于 WPF: NHotkey...
  • 如何在System.Drawing.Graphics对象上绘制多行格式的文本。
  • WPF窗体 WPF窗体调用函数

    千次阅读 2015-07-28 15:19:48
    转载地址:...原文地址:待添加··· WPF窗体  一、窗体类 在Visual StudioExpression Blend中,自定义的窗体均继承System.Windows.Window类(类型化窗体)。定义的窗体由两部分组成: 1

    转载地址:http://www.360doc.com/content/12/0307/20/8463843_192559772.shtml

    原文地址:待添加···

    WPF窗体   

    一、窗体类

    在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类(类型化窗体)。定义的窗体由两部分组成:

    1、XAML文件

       1: <Window
       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       4:     x:Class="WpfWindow.BasicWindow"
       5:     x:Name="Window"
       6:     Title="BasicWindow"
       7:     Width="300" Height="200">
       8:     <Canvas>
       9:         <Button x:Name="btnMessage" Width="79" Height="24" Content="OK" 
      10:         Canvas.Left="172" Canvas.Top="93" Click="btnMessage_Click"/>
      11:         <TextBox x:Name="txtValue" Width="215" Height="25" 
      12:         Canvas.Left="36" Canvas.Top="48" Text="" TextWrapping="Wrap"/>
      13:     </Canvas>
      14: </Window>

    2、后台代码文件

       1: using System;
       2: using System.Windows;
       3:  
       4: namespace WpfWindow
       5: {
       6:     public partial class BasicWindow : Window
       7:     {
       8:         public BasicWindow()
       9:         {
      10:             this.InitializeComponent();
      11:         }
      12:  
      13:         private void btnMessage_Click(object sender, System.Windows.RoutedEventArgs e)
      14:         {
      15:             txtValue.Text = "Hello World";
      16:         }
      17:     }
      18: }

    也可以将后台代码放在XAML文件中,上面的例子可以改写为:

       1: <Window
       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       4:     x:Class="WpfWindow.BasicWindow"
       5:     x:Name="Window"
       6:     Title="BasicWindow"
       7:     Width="300" Height="200">
       8:     <Canvas>
       9:         <Button x:Name="btnMessage" Width="79" Height="24" Content="OK" 
      10:         Canvas.Left="172" Canvas.Top="93" Click="btnMessage_Click"/>
      11:         <x:Code><![CDATA[
      12:             void btnMessage_Click(object sender, System.Windows.RoutedEventArgs e)
      13:             {
      14:                 txtValue.Text = "Hello World";
      15:             }
      16:         ]]>
      17:         </x:Code>
      18:         <TextBox x:Name="txtValue" Width="215" Height="25" 
      19:         Canvas.Left="36" Canvas.Top="48" Text="" TextWrapping="Wrap"/>
      20:     </Canvas>
      21: </Window>

    二、窗体的生存周期

    1、显示窗体

    • 构造方法
    • Show()、ShowDialog()方法:Show()方法显示非模态窗口,ShowDialog()方法显示模态窗口
    • Loaded事件:窗体第一次Show()或ShowDialog()时引发的事件,通常在此事件中加载窗体的初始化数据

    2、关闭窗体

    • Close()方法:关闭窗体,并释放窗体的资源
    • Closing事件、Closed事件:关闭时、关闭后引发的事件,通常在Closing事件中提示用户是否退出。

    3、窗体的激活

    • Activate()方法:激活某窗体
    • Activated、Deactivated事件:当窗体激动、失去焦点时引发的事件

    4、窗体的生存周期

    5.WPF窗体  - 雅博 - 雅博

    示例程序:

    • 在窗体载入时显示当前日期,并开始播放媒体
    • 当窗体失去焦点时暂停播放媒体
    • 当窗体重新获得焦点时继承播放窗体
    • 当点击窗体的关闭按钮时,询问用户是否退出应用程序

    XAML文件:

       1: <Window x:Class="WpfWindow.WindowLifeCycle"
       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       4:     Title="WindowLifeCycle" Height="200" Width="300" 
       5:         Loaded="Window_Loaded" 
       6:         Activated="Window_Activated" 
       7:         Deactivated="Window_Deactivated" 
       8:         Closing="Window_Closing">
       9:     <Canvas>
      10:         <TextBlock Canvas.Right="15" Canvas.Bottom="15" Height="21" Name="txtDate"/>
      11:         <MediaElement Canvas.Left="89" Canvas.Top="12" Height="100" Width="100" 
      12:                       Name="myMedia" Source="numbers.wmv" 
      13:                       Stretch="Fill" LoadedBehavior="Manual" />
      14:     </Canvas>
      15: </Window>

    代码文件:

       1: using System;
       2: using System.Windows;
       3:  
       4: namespace WpfWindow
       5: {
       6:     public partial class WindowLifeCycle : Window
       7:     {
       8:         public WindowLifeCycle()
       9:         {
      10:             InitializeComponent();
      11:         }
      12:  
      13:         // 开关变量,判断是否正在播放媒体
      14:         private bool isPlaying;
      15:  
      16:         private void Window_Loaded(object sender, RoutedEventArgs e)
      17:         {
      18:             // 窗体加载时,显示当前日期及开始播放媒体
      19:             txtDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
      20:  
      21:             myMedia.Play();
      22:             isPlaying = true;
      23:         }
      24:  
      25:         private void Window_Activated(object sender, EventArgs e)
      26:         {
      27:             // 如果窗体被激活,则继承播放媒体
      28:             if (!isPlaying)
      29:             {
      30:                 myMedia.Play();
      31:                 isPlaying = true;
      32:             }
      33:         }
      34:  
      35:         private void Window_Deactivated(object sender, EventArgs e)
      36:         {
      37:             // 如果窗体失去焦点,则暂停播放媒体
      38:             if (isPlaying)
      39:             {
      40:                 myMedia.Pause();
      41:                 isPlaying = false;
      42:             }
      43:         }
      44:  
      45:         private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
      46:         {
      47:             // 点击窗体的“关闭”按钮,询问用户是否退出程序
      48:  
      49:             string message = "Quit the application?";
      50:             string title = "System Information";
      51:             MessageBoxButton button = MessageBoxButton.OKCancel;
      52:             MessageBoxImage img = MessageBoxImage.Question;
      53:  
      54:             MessageBoxResult result = MessageBox.Show(
      55:                 message, title, button, img);
      56:  
      57:             if (result == MessageBoxResult.Cancel)
      58:             {
      59:                 e.Cancel = true;    // 取消退出
      60:             }
      61:         }
      62:     }
      63: }

    三、其他窗体相关的属性、方法、事件

    WPF窗体的详细的属性、方法、事件请参考MSDN,有很多的属性、方法、事件与Windows应用程序中System.Windows.Forms.Form类相同或近似,其中常用的一些属性、方法、事件有:

    • 窗体边框模式(WindowStyle属性)和是否允许更改窗体大小(ResizeMode属性)
    • 窗体启动位置(WindowStartupLocation属性)和启动状态(WindowState属性)
    • 窗体标题(Title属性)
    • 始终在最前(TopMost属性)
    • 是否显示在任务栏(ShowInTaskbar)

    四、定义异形窗体

    使用异形窗体,可以将窗体的背景设置为透明,边框设置为空,然后利用控件做出异形的窗体,例如:

    XAML:

       1: <Window x:Class="WpfWindow.CustomerWindow"
       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       4:     Title="NonRectangularWindowSample" SizeToContent="WidthAndHeight" 
       5:     MouseLeftButtonDown="NonRectangularWindow_MouseLeftButtonDown"
       6:     WindowStyle="None" 
       7:     AllowsTransparency="True" 
       8:     Background="Transparent">
       9:     <Canvas Width="200" Height="200" >
      10:         <Path Stroke="DarkGray" StrokeThickness="2">
      11:             <Path.Fill>
      12:                 <LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1" >
      13:                     <GradientStop Color="White"  Offset="0"></GradientStop>
      14:                     <GradientStop Color="White"  Offset="0.45"></GradientStop>
      15:                     <GradientStop Color="LightBlue" Offset="0.9"></GradientStop>
      16:                     <GradientStop Color="Gray" Offset="1"></GradientStop>
      17:                 </LinearGradientBrush>
      18:             </Path.Fill>
      19:             <Path.Data>
      20:                 <PathGeometry>
      21:                     <PathFigure StartPoint="40,20" IsClosed="True">
      22:                         <LineSegment Point="160,20"></LineSegment>
      23:                         <ArcSegment Point="180,40" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
      24:                         <LineSegment Point="180,80"></LineSegment>
      25:                         <ArcSegment Point="160,100" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
      26:                         <LineSegment Point="90,100"></LineSegment>
      27:                         <LineSegment Point="90,150"></LineSegment>
      28:                         <LineSegment Point="60,100"></LineSegment>
      29:                         <LineSegment Point="40,100"></LineSegment>
      30:                         <ArcSegment Point="20,80" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
      31:                         <LineSegment Point="20,40"></LineSegment>
      32:                         <ArcSegment Point="40,20" Size="20,20" SweepDirection="Clockwise"></ArcSegment>
      33:                     </PathFigure>
      34:                 </PathGeometry>
      35:             </Path.Data>
      36:         </Path>
      37:         <Label Width="200" Height="120" FontSize="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">Drag Me</Label>
      38:         <Button Canvas.Left="155" Canvas.Top="30" Click="closeButtonRectangle_Click">
      39:             <Button.Template>
      40:                 <ControlTemplate>
      41:                     <Canvas>
      42:                         <Rectangle Width="15" Height="15" Stroke="Black" RadiusX="3" RadiusY="3">
      43:                             <Rectangle.Fill>
      44:                                 <SolidColorBrush x:Name="myAnimatedBrush" Color="Red" />
      45:                             </Rectangle.Fill>
      46:                         </Rectangle>
      47:                         <Line X1="3" Y1="3" X2="12" Y2="12" Stroke="White" StrokeThickness="2"></Line>
      48:                         <Line X1="12" Y1="3" X2="3" Y2="12" Stroke="White" StrokeThickness="2"></Line>
      49:                     </Canvas>
      50:                 </ControlTemplate>
      51:             </Button.Template>
      52:         </Button>
      53:     </Canvas>
      54: </Window>

    代码文件:

       1: using System.Windows;
       2: using System.Windows.Input;
       3:  
       4: namespace WpfWindow
       5: {
       6:     public partial class CustomerWindow : Window
       7:     {
       8:         public CustomerWindow()
       9:         {
      10:             InitializeComponent();
      11:         }
      12:  
      13:         void NonRectangularWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
      14:         {
      15:             this.DragMove();
      16:         }
      17:  
      18:         void closeButtonRectangle_Click(object sender, RoutedEventArgs e)
      19:         {
      20:             this.Close();
      21:         }
      22:     }
      23: }

     5.WPF窗体  - 雅博 - 雅博


    另:

    Window 有几个重要的事件:他们调用的顺序是: 

    Window.Initialized 

    Window.Activatied (object sender, EventArgs e)

    Window.Loaded (object sender, RoutedEventArgs e)

    Window.ContentRendered 

    Window.DeActivatied 

    Window.Closing 

    Window.UnLoad 

    Window.Closed 

    Window.Activatied

    可能会与Window.DeActivatied 切换多次(窗体切换的时候发生)

    展开全文
  • Windows窗体WPF窗体相互调用

    千次阅读 2017-03-28 17:28:22
    一.WPF窗体调用windows窗体 (一)在wpf窗体中,若想调用windows窗体,有两种方法: 1.直接调用  private void btnOpenWindows2_Click(object sender, RoutedEventArgs e) { //直接调用 Form1 form1=new Form

    一.WPF窗体调用windows窗体

    (一)在wpf窗体中,若想调用windows窗体,有两种方法:

    1.直接调用        

     private void btnOpenWindows2_Click(object sender, RoutedEventArgs e)
            {
                //直接调用
                Form1 form1=new Form1();
                form1.ShowDialog();
            }
    2.借助WindowInteropHelper和WindowWrapper。 WindowInteropHelper 类用于 协助 Windows Presentation Foundation (WPF) 与 Win32 代码之间的互操作。

     private void btnOpenWindows_Click(object sender, RoutedEventArgs e)
            {
                //借助WindowInteropHelper和WindowWrapper
                Form1 form1 = new Form1();
                WindowInteropHelper helper=new WindowInteropHelper(this);
                form1.StartPosition = FormStartPosition.CenterParent;
                form1.ShowDialog(new WindowWrapper(helper.Handle));
            }
    其中WindowWrapper是自己定义的类,如下:
    public class WindowWrapper : System.Windows.Forms.IWin32Window
        {
            public WindowWrapper(IntPtr handle)
            {
                _hwnd = handle;
            }
    
            public IntPtr Handle
            {
                get { return _hwnd; }
            }
    
            private IntPtr _hwnd;
        }
    (二)如果在wpf窗体中,以非模态方式调用windows窗体时,需要注意使用 ElementHost类来沿着正确的窗口或窗体转发键盘事件消息

    1.在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0下找到 WindowsFormsIntegration.dll。将该dll引用进WPF中
    2.调用WindowsFormsHost.EnableWindowsFormsInterop( )方法
            private void btnOpenWindows2_Click(object sender, RoutedEventArgs e)
            {
                //直接调用
                WindowsFormsHost.EnableWindowsFormsInterop();//需要在WPF应用程序中显示一个非模态的Windows窗体
                Form1 form1=new Form1();
                form1.Show();
            }
    (三)在windows窗体中调用wpf窗体
    1.建立wpf项目
    2.建立windows窗体项目
    3.在windows窗体项目中引用wpf项目
    4.如果想在windows窗体中访问wpf窗体,还需要引用几个dll:

    PresentationCore

    PresentationFramework

    System.Xaml

    WindowsBase

    WindowsFormsIntegration


    5.如果在windows窗体中,以非模态方式调用wpf窗体时,需要注意使用 ElementHost类来沿着正确的窗口或窗体转发键盘事件消息
     private void btnOpenWPF_Click(object sender, EventArgs e)
            {
                System.Windows.Window wpfwindow = new WpfApplication3.UserDefineWindow();
                //使WPF窗体响应键盘输入
                ElementHost.EnableModelessKeyboardInterop(wpfwindow);
                //设置WPF窗体的owner,使其WindowStartupLocation.CenterOwner生效。
                WindowInteropHelper helper = new WindowInteropHelper(wpfwindow);
                helper.Owner = this.Handle;
                wpfwindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
                wpfwindow.Show();
            }




    展开全文
  • Windows窗体中的WPF控件

    2014-05-08 10:15:48
    Windows窗体集成除了给WPF从头开始编写用户界面之外,还可以在WPF应用程序中使用已有的Windows窗体控件,创建要在Windows窗体应用程序中使用的新WPF控件。集成Windows窗体和WPF的最佳方式是创建控件,将它们集成到另...
  • 源自《WPF编程宝典》总结小记。...从WPF应用程序中显示模态窗体很简单,如WPF中: Form1 frm=new Form1(); if(frm.ShowDialog()==System.Windows.Form.DialogResult.OK) { MessageBox.Show("You c...
  • 特别是他们都使用窗体对象来实现用户接口,并且都允许你指定应用程序启动时运行的代码。默认情况下,启动代码只是加载并显示主窗体,但是你可以修改它来创建一个统一的容器,用企业库信息组装它,并处理应用中使用的...
  • 特别是他们都使用窗体对象来实现用户接口,并且都允许你指定应用程序启动时运行的代码。默认情况下,启动代码只是加载并显示主窗体,但是你可以修改它来创建一个统一的容器,用企业库信息组装它,并处理应用中使用的...
  • 理解Windows窗体和WPF中的跨线程调用

    千次阅读 2012-01-11 17:32:02
    你曾开发过Windows窗体程序...这种Windows窗体应用程序中跨线程调用时的一个最为奇怪的行为就是,有些时候它没什么问题,可有些时候却会出现问题。在WPF(Windows Presentation Foundation)中,这个行为有所改变。WPF
  • 理解windows 窗体和wpf的跨线程调用

    千次阅读 2014-03-17 18:35:53
    最近在做wpf项目,但是发现从wpf中有些函数方法不存在了,比如windows 窗体中的InvokeRequired,在wpf中不存在。 你曾开发过Windows窗体程序,可能会注意到...这种Windows窗体应用程序中跨线程调用时的一个最为
  • 许多 Windows Forms控件都有等效的 WPF 控件,...您始终可以使用互操作来承载在基于 WPF应用程序中没有等效项的 Windows Forms控件。 下表显示哪些 Windows Forms控件组件具有等效的 WPF 控件功能。 ...
  • //如果需要再WPF中显示非模态windows窗体时,需要调用此方法。 //即时不调用此方法,也仍然会显示窗体,但是不能识别所有键盘输入。 System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop...
  • WPF之自定义窗体

    千次阅读 2012-03-07 14:29:29
     最开始我想到的方法,也是最传统的方法,就是是使用模板样式来自定义窗体,首先设置窗体的WindowStyle为None,然后在Template里定义窗体布局,还需要考虑标题栏拖动、双击最大化、右键系统菜单
  • WPF创建自定义窗体

    千次阅读 2011-06-28 12:06:00
    使用wpf能够轻松的制作华丽... 最开始我想到的方法,也是最传统的方法,就是是使用模板样式来自定义窗体,首先设置窗体的WindowStyle为None,然后在Template里定义窗体布局,还需要考虑标题栏拖动、双击最大化、右键
  • WPF 不规则窗体

    2015-10-20 22:14:21
    ,210,149,232" Text="第一个WPF应用程序界面"  TextWrapping="Wrap" FontSize="26.667" RenderTransformOrigin="0.476,0.5" Foreground="#FFF7F7F2"/> 后台: private void Button1_Click...
  • Windows 窗体和 WPF 互操作性输入

    千次阅读 2013-04-28 10:59:56
    事件:为了美化窗体在原来的winform程序基础上直接加了个WPF 窗体,代码如下: FrmModel frmmodel = new FrmModel(); frmmodel.Show();  问题来了,窗体上的TextBox不接受键盘的任何输入,问题出在哪里? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,436
精华内容 2,574
关键字:

wpf和windows窗体应用的区别