4

ユーザーがクリップボードからToolStripTextBoxにテキストを貼り付けているかどうかを検出する必要があります。したがって、ToolStripTextBoxから継承するカスタムコントロールを作成しました。次に、WM_PASTEメッセージをキャッチするためにWndProcをオーバーライドしたかったのですが、オーバーライドするWndProcがないことに気付きました。標準のTextBoxの場合、説明されているメソッドは正常に機能します。

ToolStripTextBoxのクリップボードからの貼り付けを検出するために何をすべきか提案はありますか?

4

3 に答える 3

2

WndProcinToolStripTextBoxは手の届かないようです。私は好奇心から少し検索し、その答えに出くわしました-https ://stackoverflow.com/a/4688745/168719

使用ToolStripControlHostするオプションがない場合でも、WndProcのカスタム処理を必要とするシナリオには他の賢い解決策があります。

http://bytes.com/topic/c-sharp/answers/279168-toolstriptextbox-right-click

Nicholas Paldino [.NET / C#MVP]

私はちょうどそれに気づきました。これを回避するために、TextBoxプロパティを呼び出すことでホストされたTextBoxを取得できます。次に、WndProcメソッドをオーバーライドしてコンテキストメニューメッセージを無視する[または明らかにWM_PASTEをインターセプトする...] NativeWindowから派生したクラスを作成できるはずです。textboxプロパティを取得したら、ハンドルを取得して、ハンドルを割り当てます。オーバーライドされたNativeWindowクラスに。

于 2012-08-07T13:33:29.207 に答える
0

Windows[Windowsフォーム/WPF]を使用している場合は、クリップボードを使用してデータを検出できます。

if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
            {

            richTextBox1.Paste();
            MessageBox.Show("You have data in clipboard")

            }

(WPFを含むように編集)

于 2012-08-07T12:53:35.607 に答える
0

ToolStripTextBoxは、標準のテキストボックスを含むホストコントロールです。説明したとおりに実行する必要がありますが、ToolStripTextBox.TextBoxをテキストボックスに置き換えます。残念ながら、これは読み取り専用のプロパティです。

したがって、ホストするコントロールのタイプを変更できるようにするには、ToolStripControlHostからMyToolStripTextBoxを派生させる必要があります。

于 2012-08-07T13:31:00.523 に答える