2

WindowsForms で LinkLabel をダブルクリックすると、そのテキストがコピーされます。どうすればこれを防ぐことができますか?

ところで、それが違いを生むなら、それは.Net 2.0アプリケーションです。

ありがとう

4

3 に答える 3

2

次を使用して、いつでもクリップボードをクリアできます。

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);
    }
于 2012-09-08T05:35:12.817 に答える
1

この動作はLinkLabelに組み込まれており、オーバーライドする方法はないようです。

テストの結果、MouseDoubleClick イベントがトリガーされるまでに、クリップボードが既に変更されていることがわかりました。

FWIW、私はこのコントロールを必要としませんでした.MouseEnter/MouseLeaveイベントのスタイリングと使用を備えた通常のLabelは、多くのプロジェクトでうまく機能しました。

于 2012-09-08T06:08:13.003 に答える
0

できることは、独自のラベルを作成し、それを 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 );
}
于 2013-05-03T13:32:55.490 に答える