3

このイベントを使用すると、ラベルが消えるだけですが、これをどのように行うのですか?

    private void label4_MouseMove(object sender, MouseEventArgs e)
    {
        label4.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
    }
4

4 に答える 4

5
handle these three event ...
Control actcontrol;
 Point   preloc;
 void label1_Mousedown(object sender, MouseEventArgs e)
        {

            actcontrol = sender as Control;
            preloc = e.Location;
            Cursor = Cursors.Default;


        }
        void label1_MouseMove(object sender, MouseEventArgs e)
        {
            if (actcontrol == null || actcontrol != sender)
                return;
            var location = actcontrol.Location;
            location.Offset(e.Location.X - preloc.X, e.Location.Y - preloc.Y);            
            actcontrol.Location = location;

        }
        void label1_MouseUp(object sender, MouseEventArgs e)
        {
            actcontrol = null;
            Cursor = Cursors.Default;

        }
于 2011-12-07T11:06:50.653 に答える
3

の位置はlabel4コンテナ(Formまたは親コントロール)を基準にしており、カーソル位置は画面を基準にしている場合があります。

場所を調整する必要があります。たとえば、コンテナがのForm場合、画面内でその場所を見つけて、画面に対するカーソルの位置を計算できます。

これは原因の唯一の可能性ですが、これはたくさん起こります:)

于 2009-11-26T12:14:17.220 に答える
3

フォームのPointToClient()関数を使用して、マウスのX/Y座標をフォームに相対的なポイントに変換します。

編集:代わりにマウスイベント引数オブジェクトのプロパティを使用してください:

Label1.Location = New Point(e.X, e.Y)

PSはVBを許します、このPCにはC#はありません

于 2009-11-26T12:16:51.137 に答える
1

要素の場所は、その親を基準にしています。この場合、マウスの絶対位置をその場所として使用していますが。

マウスの位置を親要素の座標系に変換する必要があります。

PointToClientラベルの親要素のメソッドを使用します。

于 2009-11-26T12:15:22.647 に答える