locked
コピペを禁止したい RRS feed

  • 質問

  • TextBoxのKeyDownイベントで全部のキーを握りつぶしても貼り付くのですが、なにか方法はありますでしょうか。
    Silverlight4です。
    2010年10月10日 11:05

回答

  • Ctrl+Vでの貼り付けを無効にしたい、ということでしょうか?

    もしそうなら、以下のようなTextBox を継承したカスタムコントロールを作成すれば可能です。

    public class MyTextBox : TextBox
    {
      bool IsHandleKeyDown { get; set; }
    
      protected override void OnKeyDown(KeyEventArgs e)
      {
        if (e.Key == Key.Ctrl)
        {
          IsHandleKeyDown = true;
        }
        if (IsHandleKeyDown && (e.Key == Key.V))
        {
          e.Handled = true;
        }
        else
        {
          base.OnKeyDown(e);
        }
      }
    
      protected override void OnKeyUp(KeyEventArgs e)
      {
        if (e.Key == Key.Ctrl)
        {
          IsHandleKeyDown = false;
        }
        base.OnKeyUp(e);
      }
    }
    
    


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク rubyeye 2010年10月11日 1:07
    2010年10月10日 13:52

すべての返信

  • Ctrl+Vでの貼り付けを無効にしたい、ということでしょうか?

    もしそうなら、以下のようなTextBox を継承したカスタムコントロールを作成すれば可能です。

    public class MyTextBox : TextBox
    {
      bool IsHandleKeyDown { get; set; }
    
      protected override void OnKeyDown(KeyEventArgs e)
      {
        if (e.Key == Key.Ctrl)
        {
          IsHandleKeyDown = true;
        }
        if (IsHandleKeyDown && (e.Key == Key.V))
        {
          e.Handled = true;
        }
        else
        {
          base.OnKeyDown(e);
        }
      }
    
      protected override void OnKeyUp(KeyEventArgs e)
      {
        if (e.Key == Key.Ctrl)
        {
          IsHandleKeyDown = false;
        }
        base.OnKeyUp(e);
      }
    }
    
    


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク rubyeye 2010年10月11日 1:07
    2010年10月10日 13:52
  • 動作しました。ありがとうございました。
    #PasswordBoxはsealedされてるからできないですね。これは諦めます。
    2010年10月11日 1:12