質問

このイベントを使用するとラベルが消えます。どうすればよいですか

    private void label4_MouseMove(object sender, MouseEventArgs e)
    {
        label4.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
    }
役に立ちましたか?

解決

label4 の場所はコンテナ( Form または親コントロール)に対して相対的です。カーソルの位置は画面に対して相対的な場合があります。

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

これは原因の1つの可能性にすぎませんが、これはよく起こります:)

他のヒント

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;

        }

フォームのPointToClient()関数を使用して、マウスのX / Y座標をフォームに関連するポイントに変換します。そうする必要があります。

編集:代わりにマウスイベントargsオブジェクトプロパティを使用します:

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

PSはVBをご容赦ください。このPCにはC#はありません

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

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

PointToClient ラベルの親要素のメソッド。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top