Julyflowers
Julyflowers

Reputation: 133

Textbox created in WPF is not editable at run time

I am creating a WPF Window in which I have text boxes. However, when I run the project in Debug mode, (F5), I am not able to edit the text boxes that I created, nor am I able to choose from the listbox that I created. I googled, found that WPF and Win32 need to communicate to accept keyboard input, and got these 3 lines :

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

However, I am new to C# and hence I have absolutely no idea where to insert this C# code. I added the System.Windows.Forms and WindowsFormIntegration references to my project.

The window I am designing will be the first window that will appear at the launch of the application, hence I need the textboxes in this window to be editable without launching another window. Kindly guide me.

Edit : This is my XAML code:

<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>

This is my C# code:

namespace Myproject
{
   public partial class MainWindow : Window
   {   
       public MainWindow()
       {
           InitializeComponent();        
       }
   }
}

Edit 2: I modified the first line in the App.Xaml code like this :

<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">

And in the App.Xaml.cs I added this snippet:

private void Application_Startup(object sender, StartupEventArgs e)
    {
        MainWindow win = new MainWindow();
        ElementHost.EnableModelessKeyboardInterop(win);
        win.Show();
        System.Windows.Threading.Dispatcher.Run();
    }

But still no luck. Where am I going wrong?

Upvotes: 2

Views: 6671

Answers (1)

Patrick Hofman
Patrick Hofman

Reputation: 156918

Try to change your Application.xaml to include the 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"
>

Remove all the startup code you had in the cs file.

Or

Change your cs code to this:

Window1 window1 = new Window1();
this.ShutdownMode = ShutdownMode.OnMainWindowClose;
this.MainWindow = window1;

Upvotes: 1

Related Questions