2017-07-11 1 views
0

ユーザーが 'whatsYourNameTextbox'に自分の名前を入力してEnterキーを押すと、非表示のテキストブロック( 'doYouWannaPlayTextblock')をVisibleにします。私は、Windowsフォームで作業するには、以下のしまったテキストボックスにテキストを入力してEnterキーを押したときに、テキストブロックの可視性を「可視」にするにはどうすればよいですか?

<TextBox x:Name="playerNameTextbox"        
      Grid.Column="1" Grid.Row="2" 
      VerticalAlignment="Top" 
      HorizontalAlignment="Center" 
      BorderBrush="Black" 
      Height="auto" 
      Width="160" 
      HorizontalContentAlignment="Center" 
      CaretBrush="red" 
      FontFamily="Segoe Print" 
      FontSize="30" 
      ToolTip="Type your name and then press Enter" 
      KeyUp="playerNameTextbox_KeyUp" /> 

    <TextBlock Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2" 
     x:Name="doYouWannaPlayTextblock" 
     FontFamily="Segoe Print" 
     FontSize="16" 
     FontWeight="SemiBold" 
     Foreground="Red" 
     Padding="20" 
     Visibility="Hidden" 
     TextAlignment="Center" 
     TextWrapping="Wrap" Margin="0,0.4,0.2,-25"> 
     Hi, 
     <TextBlock Text="{Binding Path=Text, ElementName=playerNameTextbox}"/> 
     - it's good to see you. Would you like to play 'Tables'? If so, just click the 'Choose Game' button. 
    </TextBlock> 

private void playerOneNameTextbox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 

      doYouWantToPlayTextbox.Visible = true; 
      doYouWantToPlayTextbox.Text = "Hi, " + playerOneNameTextbox.Text + ". " + 
      "It's good to see you! " + 
      "\r\nWould you like to play with us? " + 
      "\r\nIf you would, just click right here in this box."; 
      clickToPlayTimer.Start();   
    } 

が、私はコードビハインドでWPFに私ができることを使用trytoとき、これは私がXAMLでこれまで持っているものです「Tは、次を超えて取得する:

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

    private void playerNameTextbox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      doYouWannaPlayTextblock.Visibility = Visible; 
     } 
    } 
} 

}

'' 目に見える、と私が試した他のすべて、赤squiを投げますggly。

ご協力いただければ幸いです。

答えて

0
private void playerNameTextbox_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     this.doYouWannaPlayTextblock.Visibility = Visibility.Visible; 
    } 
} 
+0

です。Kemalのおかげで、これは完璧に機能しました。 – Mike

+0

あなたは歓迎です:) @Mike –

0

まず、Visibilityを変更するための正しい方法は次のようになります。

doYouWannaPlayTextblock.Visibility = Visibility.Visible; 

第二に、あなたがKeyUpを使用してもよろしいですか? KeyDownは、この場合には意味があります。これは、リリース時にではなく、Enterキーを押すとすぐに起動するためです。

第3に、doYouWannaPlayTextblockがEnterキーを押すまで表示されない場合、テキストがコードで設定されるため、XAMLにテキストを入れる必要はありません。テキストを追加するためのコードは

doYouWannaPlayTextblock.Text = "Hi, " + playerOneNameTextbox.Text + ". " + 
     "It's good to see you! " + 
     "\r\nWould you like to play with us? " + 
     "\r\nIf you would, just click right here in this box."; 
+0

多くのありがとう、マット - これは完全に働いた。私はこの問題を解決しようと多くの時間を費やしてきました。私が歩いてきたチュートリアル、ビデオ、本では、xxx.Visibility = Visibility.xxxという構築に遭遇したとは思いません。私はそれに実際に何が起こっているのかを尋ねて尋ねることはできますか? Re 'KeyUp' v 'KeyDown'前者は私にとってより適切に感じましたが、あなたの観察に感謝します。私はXAMLにそのようなことをコードの背後に置く方がいいと思っていました。 – Mike

+0

@Mike 'Visibility'プロパティは、可視性列挙型を受け入れます。なぜなら、最初に列挙型を呼び出してから、その列挙型の中で必要な値を呼び出す必要があるからです。それがなぜ 'Visibility.XXXX'のように見えるのか –

関連する問題