简述
命令行参数是一种机制,用户可以在 WPF 应用程序执行时将一组参数或值传递给它。这些参数对于从外部控制应用程序非常重要,例如,如果您想从命令提示符打开 Word 文档,则可以使用此命令“ C:\> start winword word1.docx ”,它将打开word1 .docx文件。
命令行参数在 Startup 函数中处理。下面是一个简单的示例,它展示了如何将命令行参数传递给 WPF 应用程序。让我们创建一个名为WPFCommandLine的新 WPF 应用程序。
-
将工具箱中的一个文本框拖到设计窗口中。
-
在这个例子中,我们将一个 txt 文件路径作为命令行参数传递给我们的应用程序。
-
程序将读取 txt 文件,然后将所有文本写入文本框。
-
以下 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" HorizontalMoognment = "Left"
Height = "180" Margin = "100" TextWrapping = "Wrap"
VerticalMoognment = "Top" Width = "300"/>
</Grid>
</Window>
- 现在订阅 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>
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;
}
}
}
}
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);
}
}
}
}
现在让我们尝试将您机器上的文件名从Test.txt更改为Test1.txt并再次执行您的程序,然后您将在文本框中看到该错误消息。
我们建议您执行上述代码并按照所有步骤成功执行您的应用程序。