새 컨트롤을 쉽게 화면에서 이동할 수 있도록 레이블 재정의를 만들었습니다.끌어서 놓기 - Winforms에서 레이블 이동
아래 코드를 첨부했지만 응용 프로그램을 실행하거나 레이블을 이동하려고하면 항상 꺼져 있습니다. 또한 때로는 완전히 사라지거나 흔적을 남기거나 0,0 위치로 재설정됩니다. 스크린 샷을 살펴보십시오.
저는이 방법을 100 % 사용 했었지만, 최근에 약간의 조정을 한 후에 다시 개를 찾았습니다. 어떻게 작동하는지 잘 모르겠습니다.
스크린 샷 :
코드 :
internal sealed class DraggableLabel : Label
{
private bool _dragging;
private int _mouseX, _mouseY;
public DraggableLabel()
{
DoubleBuffered = true;
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (_dragging)
{
Point mposition = PointToClient(MousePosition);
mposition.Offset(_mouseX, _mouseY);
Location = mposition;
}
base.OnMouseMove(e);
}
protected override void OnMouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
_dragging = true;
_mouseX = -e.X;
_mouseY = -e.Y;
BringToFront();
Invalidate();
}
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (_dragging)
{
_dragging = false;
Cursor.Clip = new Rectangle();
Invalidate();
}
base.OnMouseUp(e);
}
}
이렇게하면 [version control] (http://www.fortnet.org/FortNet/HTML/Presentation/CVS/whyvc.html) __을 사용하여 향후 이러한 일이 발생하지 않도록 할 수 있습니다. [이 튜토리얼] (http://hginit.com/01.html)은 시작하는 데 도움이 될 수 있습니다. – Adam
과 매우 다른 소리를 들었지만, 최근에 약간 조정 한 후에 다시 개에갔습니다. - 보시다시피, 귀하의 질문에 언급 할 가치가 없을 것입니다. – Adam