2017-02-13 6 views
-3

テキスト・ストリング・データをテキスト・ボックスから別のページのテキスト・ブロックに送信するボタンがいくつかあります。以下のコードをご覧ください。ボタンでテキスト文字列データの送信をキャンセルするには、Application.Current.Propertiesを使用しますか? WPF C#

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    Application.Current.Properties["obj1"] = textbox.Text; 
} 

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    Application.Current.Properties["obj2"] = textbox2.Text; 
} 

ボタンをクリックして送信する情報を停止/キャンセルするにはどうすればよいですか?テキスト文字列が受信され

ページでは、結果だけを元に戻すことができ、本当にあなたが送信を停止することはできません

protected override void OnInitialized(EventArgs e) 
    { 
     base.OnInitialized(e); 
     textBlock1.Text = Application.Current.Properties["obj1"]?.ToString(); 
     textBlock2.Text = Application.Current.Properties["obj2"]?.ToString(); 
    } 
+0

この処理にはどのくらいの時間がかかりますか?ユーザーがキャンセルをクリックする時間があるようには思われません。 –

+1

最初に値を設定しないように、辞書の値を他の方法で設定することを「停止」できません。一度実行されると、このような同期操作をキャンセルする方法はありません。 – mm8

+1

値をstring.Emptyに設定するか、クリアする場合はnullに設定できます。Application.Current.Properties ["obj2"] = string.Empty; – mm8

答えて

0

を下回っています。送信のプロセスは、ユーザーが反応する時間がかかりすぎるよりずっと前にコードの範囲外です。反応時間の制限です。同じ方法で、古い冗談のように送信される電子メールを止めるためにcat5のプラグを抜くことはできません。送信を再検討するときには、それは長い間あなたの手から消えてしまいます。

すべてキャンセル/停止が近い限り、元の送信などにとり、人間の反応時間の0.5秒を追加した後...

あなたの最善の解決策は、単にそのための辞書値を設定する可能性がありますキーはnullになりますが、あなたの使用法は表示されないので、これはあなたのために何がうまくいくかについての最良の推測です。

+0

@Rogan以前の値をどこかに保存しておけば、辞書をそのキーの前の値に戻すことができます。実際にストレージを停止する方法はありません。 – Andrew

+1

@Roganこれが解決策です。あなたは書かれているものを理解し、あなたの特定のケースにそれを適用する方法をあなたの時間を取るべきです。少なくとも現在の開発アプローチでは解決策です。 MVVMでWPFを使い始めると、プロパティを元に戻すオプションが異なるかもしれませんが、ここではその範囲外です。 – grek40

関連する問題