C# 弹出窗口';s文本框在弹出后不消失。isOpen=false

C# 弹出窗口';s文本框在弹出后不消失。isOpen=false,c#,.net,wpf,popup,C#,.net,Wpf,Popup,我需要以下行为:当我开始在窗口中键入时,会出现一个小文本框,其中第一个字母已经键入,然后在我键入文本并按enter键后,文本框将消失,直到我再次在该窗口中键入为止。问题是当我设置Popup1.IsOpen=false时,文本框仍保留在窗口中 <Window x:Class="Beta.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://sc

我需要以下行为:当我开始在窗口中键入时,会出现一个小文本框,其中第一个字母已经键入,然后在我键入文本并按enter键后,文本框将消失,直到我再次在该窗口中键入为止。问题是当我设置
Popup1.IsOpen=false时,文本框仍保留在窗口中

<Window x:Class="Beta.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown_1">  
  <Grid> 
    <Popup Name="Popup1" IsEnabled="True" IsOpen="False" VerticalOffset="-200" HorizontalOffset="50">
       <TextBox Name="tbx" Width="50" KeyDown="tbx_KeyDown" />
     </Popup>
  </Grid>
</Window>

string temp;

private void Window_KeyDown_1(object sender, KeyEventArgs e)
    {
        Popup1.IsOpen = true;
        tbx.Focus();
    }

private void tbx_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            Popup1.IsOpen = false;
            temp = tbx.Text;
            tbx.Text = null;

        }
    }

字符串温度;
私有无效窗口\u KeyDown\u 1(对象发送方,KeyEventArgs e)
{
Popup1.IsOpen=真;
tbx.Focus();
}
私有void tbx_KeyDown(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Enter)
{
Popup1.IsOpen=false;
temp=tbx.Text;
tbx.Text=null;
}
}

您必须添加e.Handled=true,这样窗口不会弹出并重新打开弹出窗口

   private void tbx_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            Popup1.IsOpen = false;
            temp = tbx.Text;
            tbx.Text = null;
            e.Handled = true;

        }
    }

您必须添加e.Handled=true,这样窗口不会弹出并重新打开弹出窗口

   private void tbx_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            Popup1.IsOpen = false;
            temp = tbx.Text;
            tbx.Text = null;
            e.Handled = true;

        }
    }
始终调用Window_KeyDown_1()方法。必须将e.Handled设置为true

  private void tbx_KeyDown(object sender, KeyEventArgs e)
  {
     if (e.Key == Key.Enter)
     {
        Popup1.IsOpen = false;
        temp = tbx.Text;
        tbx.Text = null;
        e.Handled = true;
     }
  }
始终调用Window_KeyDown_1()方法。必须将e.Handled设置为true

  private void tbx_KeyDown(object sender, KeyEventArgs e)
  {
     if (e.Key == Key.Enter)
     {
        Popup1.IsOpen = false;
        temp = tbx.Text;
        tbx.Text = null;
        e.Handled = true;
     }
  }

我复制了你的代码,效果很好。如果你在打开弹出窗口的地方粘贴代码,可能会有所帮助。@rhe1980抱歉,我更新了代码。它不能很好地工作,它不能在allI工作,我复制了你的代码,工作正常。如果你在打开弹出窗口的地方粘贴代码,可能会有所帮助。@rhe1980抱歉,我更新了代码。它不能很好地工作它根本不能工作对不起。user106419更快…-)很抱歉user106419更快…-)