|
■No76099 (魔界の仮面弁士 さん) に返信
>>[コピー][貼り付け]をクリックしたときのイベント処理の方法がわかりません。 > > 【Visual Basic】 > > 'コピー処理 > Clipboard.Clear() > Clipboard.SetText(Label1.Text) > > > '貼り付け処理 > If Clipboard.ContainsText() Then > Label1.Text = Clipboard.GetText() > End If > ごめんなさい。書き方間違ってますね。 [コピー][貼り付け]それぞれをクリックしたときのそれぞれの処理を行うためのイベントの発生方法がわかりません。 ということでした。でも私の場合、GetTextとSetText しかしてなかったのですけど、 Clear とか ContaintsText ってあった方がいいんですね。
>>標準で表示されるコンテキストメニューの使用方法がわからないので > Label 自体に TextBox を内包しておき、そこから > 「テキストボックスのコンテキストメニュー」を呼んでみました。 > > 【C#】 > > public class MenuedLabel : System.Windows.Forms.Label > { > private System.Windows.Forms.TextBox textBox; > public MenuedLabel() > { > this.textBox = new System.Windows.Forms.TextBox(); > this.textBox.TextChanged += delegate { this.Text = this.textBox.Text; }; > } > protected override void Dispose(bool disposing) > { > if (disposing && textBox != null) > { > textBox.Dispose(); > textBox = null; > } > base.Dispose(disposing); > } > protected override void OnTextChanged(EventArgs e) > { > base.OnTextChanged(e); > if (this.textBox != null && !this.textBox.IsDisposed) > { > this.textBox.Text = base.Text; > } > } > protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e) > { > if (e.Button == System.Windows.Forms.MouseButtons.Right) > { > const int WM_CONTEXTMENU = 0x7B; > var pos = System.Windows.Forms.Cursor.Position; > int xy = (pos.Y << 16) | (pos.X & 0xFFFF); > SendMessage(textBox.Handle, WM_CONTEXTMENU, textBox.Handle, new IntPtr(xy)); > } > else > { > base.OnMouseUp(e); > } > } > [System.Runtime.InteropServices.DllImport("user32")] > private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); > } あ・・実は、わたしもこのやり方考えました。 テキストボックスのVisible を false にして見えないようにして、右クリックしたら LabelとTextboxを入れ替えてとか・・いろいろ試して・・・ 無理!! それで終わっちゃいましたけど。こういう風になるんですね。 やっぱり私には無理でした。
|