WindowsForms で LinkLabel をダブルクリックすると、そのテキストがコピーされます。どうすればこれを防ぐことができますか?
ところで、それが違いを生むなら、それは.Net 2.0アプリケーションです。
ありがとう
次を使用して、いつでもクリップボードをクリアできます。
Clipboard.Clear();
アップデート :
このコードは、マウスのダブルクリック イベントで使用できます。
これを試して :
private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e)
{
Clipboard.Clear();
}
更新 2:
次のコードを使用すると、リンク可能な値はコピーされず、クリップボードも保持されます。これらのコードは、マウス入力イベントとマウス ダブルクリック イベントで使用する必要があります。
これを試して :
public string str;
private void linkLabel1_MouseEnter(object sender, EventArgs e)
{
str = Clipboard.GetText();
linkLabel1.MouseDoubleClick+=new MouseEventHandler(linkLabel1_MouseDoubleClick);
}
private void linkLabel1_MouseDoubleClick(object sender, MouseEventArgs e)
{
Clipboard.SetText(str);
}
この動作はLinkLabelに組み込まれており、オーバーライドする方法はないようです。
テストの結果、MouseDoubleClick イベントがトリガーされるまでに、クリップボードが既に変更されていることがわかりました。
FWIW、私はこのコントロールを必要としませんでした.MouseEnter/MouseLeaveイベントのスタイリングと使用を備えた通常のLabelは、多くのプロジェクトでうまく機能しました。
できることは、独自のラベルを作成し、それを Control から public クラスとして派生させ、MyLabel : Control
その中にテキストを次のように描画することです。
protected override void OnPaint(PaintEventArgs e) { SolidBrush TextBrush = new SolidBrush(this.ForeColor); TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter ); }