Wpf 简明教程

WPF - Command Line

命令行参数是一种机制,当 WPF 应用程序执行时,用户可以使用该机制传递一组参数或值给应用程序。这些参数对于从外部控制应用程序非常重要,例如,如果您想从命令提示符打开 Word 文档,那么您可以使用此命令“ C:> start winword word1.docx ”,它将打开 word1.docx 文档。

命令行参数在 Startup 函数中处理。以下是一个简单的示例,展示了如何向 WPF 应用程序传递命令行参数。我们用名称 WPFCommandLine 创建一个新的 WPF 应用程序。

  1. 将一个文本框从工具箱拖到设计窗口中。

  2. 在此示例中,我们将以 txt 文件路径作为命令行参数传递给我们的应用程序。

  3. 程序将读取 txt 文件,然后将所有文本写入文本框。

  4. 以下 XAML 代码创建一个文本框并用一些属性初始化它。

<Window x:Class = "WPFCommandLine.MainWindow"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
   xmlns:local = "clr-namespace:WPFCommandLine"
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "525">

   <Grid>
      <TextBox x:Name = "textBox" HorizontalAlignment = "Left"
         Height = "180" Margin = "100" TextWrapping = "Wrap"
         VerticalAlignment = "Top" Width = "300"/>
   </Grid>

</Window>
  1. 现在,按如下所示在 App.xaml 文件中预订 Startup 事件。

<Application x:Class = "WPFCommandLine.App"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local = "clr-namespace:WPFCommandLine"
   StartupUri = "MainWindow.xaml" Startup = "app_Startup">

   <Application.Resources>

   </Application.Resources>

</Application>
  1. 以下给出了 App.xaml.cs 中 app_Startup 事件的实现,它将获取命令行参数。

using System.Windows;

namespace WPFCommandLine {
   /// <summary>
      /// Interaction logic for App.xaml
   /// </summary>

   public partial class App : Application {
      public static string[] Args;

      void app_Startup(object sender, StartupEventArgs e) {
         // If no command line arguments were provided, don't process them
         if (e.Args.Length == 0) return;

         if (e.Args.Length > 0) {
            Args = e.Args;
         }
      }
   }
}
  1. 现在,在 MainWindow 类中,程序将打开 txt 文件并将所有文本写入文本框。

  2. 如果发现某些错误,那么程序将在文本框中显示错误消息。

using System;
using System.IO;
using System.Windows;

namespace WPFCommandLine {

   public partial class MainWindow : Window {

      public MainWindow() {
         InitializeComponent();
         String[] args = App.Args;

         try {
            // Open the text file using a stream reader.
            using (StreamReader sr = new StreamReader(args[0])) {
               // Read the stream to a string, and write
               // the string to the text box
               String line = sr.ReadToEnd();
               textBox.AppendText(line.ToString());
               textBox.AppendText("\n");
            }
         }
         catch (Exception e) {
            textBox.AppendText("The file could not be read:");
            textBox.AppendText("\n");
            textBox.AppendText(e.Message);
         }
      }
   }
}
  1. 当上述代码被编译并执行时,它将生成一个带有文本框的空白窗口,因为此程序需要命令行参数。所以 Visual Studio 提供了一种使用命令行参数执行应用程序的简单方法。

  2. 在解决方案资源管理器中右击您的 WPF 项目并选择属性,它将显示以下窗口。

wpf commandline
  1. 选择调试选项并在命令行参数中写入文件路径。

  2. 使用 Test.txt 创建一个 txt 文件,并在该文件中写入一些文本并将其保存在任何位置。在此情况下,txt 文件保存在“ D:\ ”硬盘驱动器上。

  3. 保存项目中的更改并编译和执行您的应用程序。您将看到 TextBox 中的文本,该文本由程序从 Text.txt 文件中读取。

output of commandline

现在,让我们尝试将计算机上的文件名从 Test.txt 更改为 Test1.txt ,然后再次执行程序,然后您将在文本框中看到错误消息。

error output of the commandline

我们建议您执行上述代码并按照所有步骤成功执行应用程序。