我正在创建一个WPF窗口,其中有文本框。但是,当我在调试模式(F5)中运行项目时,我无法编辑我创建的文本框,也无法从我创建的列表框中进行选择。我用Google搜索,发现WPF和Win32需要通信才能接受键盘输入,并得到这3行:
Window w = new Window1();
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w);
w.Show();
但是,我是C#的新手,因此我完全不知道在哪里插入这个C#代码。我将System.Windows.Forms和WindowsFormIntegration引用添加到我的项目中。
我正在设计的窗口将是应用程序启动时出现的第一个窗口,因此我需要在不启动另一个窗口的情况下编辑此窗口中的文本框。请指导我。
编辑:这是我的XAML代码:
<Window x:Name="Window1" x:Class="Myproject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Risk Assessment"
Height="741" Width="1216.091">
<GroupBox x:Name="GroupBox1">
<Grid>
<TextBox x:Name="Length" IsReadOnly ="False" IsEnabled="True" />
</Grid>
</GroupBox>
</Window>
这是我的C#代码:
namespace Myproject
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
编辑2:我修改了App.Xaml代码中的第一行,如下所示:
<Application x:Class="Myproject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
在App.Xaml.cs中我添加了这个片段:
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow win = new MainWindow();
ElementHost.EnableModelessKeyboardInterop(win);
win.Show();
System.Windows.Threading.Dispatcher.Run();
}
但仍然没有运气。我哪里错了?
答案 0 :(得分:1)
尝试更改Application.xaml
以包含StartupUri
:
<Application x:Class="Myproject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml"
>
删除cs文件中的所有启动代码。
或的
将您的cs代码更改为:
Window1 window1 = new Window1();
this.ShutdownMode = ShutdownMode.OnMainWindowClose;
this.MainWindow = window1;