在WPF中创建的文本框在运行时不可编辑

本文关键字:运行时 编辑 文本 WPF 创建 | 更新日期: 2023-09-27 18:02:44

我正在创建一个WPF窗口,其中我有文本框。但是,当我在调试模式下运行项目时,(F5),我无法编辑我创建的文本框,也无法从我创建的列表框中进行选择。我谷歌了一下,发现WPF和Win32需要通信来接受键盘输入,得到了这3行:

Window w = new Window1();
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w);
w.Show();

然而,我是c#的新手,因此我完全不知道在哪里插入这段c#代码。我添加了System.Windows.Forms和windowsforminintegration引用到我的项目中。

我正在设计的窗口将是第一个窗口,将出现在应用程序的启动,因此我需要在这个窗口中的文本框是可编辑的,而不启动另一个窗口。请指引我。

这是我的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 . xml .cs中,我添加了以下代码片段:
private void Application_Startup(object sender, StartupEventArgs e)
    {
        MainWindow win = new MainWindow();
        ElementHost.EnableModelessKeyboardInterop(win);
        win.Show();
        System.Windows.Threading.Dispatcher.Run();
    }

但仍然没有运气。我哪里做错了?

在WPF中创建的文本框在运行时不可编辑

尝试更改您的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;