我是一个热心的程序员,也是堆栈溢出的新手。 我想在C#中建立一个OS(操作系统)的原型...只是一个测试。如何制作一个picturebox拖动?
就像我们看到的,我们可以在桌面上拖动东西并将它放在任何位置,我正在为我的操作系统创建桌面。
那么我该如何制作一个图标(图片框)拖拽功能,以及如何保存它的位置,以便下次打开我的桌面时,我可以在同一个地方看到它? 我很喜欢拖着没有任何冻结或那些鬼鬼祟祟的错误。我很想如果它是接近和光滑如Windows中的那些(拖动桌面项目(图标))..
谢谢...
我是一个热心的程序员,也是堆栈溢出的新手。 我想在C#中建立一个OS(操作系统)的原型...只是一个测试。如何制作一个picturebox拖动?
就像我们看到的,我们可以在桌面上拖动东西并将它放在任何位置,我正在为我的操作系统创建桌面。
那么我该如何制作一个图标(图片框)拖拽功能,以及如何保存它的位置,以便下次打开我的桌面时,我可以在同一个地方看到它? 我很喜欢拖着没有任何冻结或那些鬼鬼祟祟的错误。我很想如果它是接近和光滑如Windows中的那些(拖动桌面项目(图标))..
谢谢...
是的,它是。
假设一个PictureBox名为 “pbxBigCat”(用pPicture加载...)
添加此行到您的窗体:
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
,然后写了pbxBigCat MouseDown事件的事件处理程序:
private void pbxBigCat_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(pbxBigCat.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
如果你测试它,你会选择它的工作。欲了解更多信息(如保存位置等),我要参考,Make a borderless form movable?
另一种可能做到这一点(现在我们已经称为标签Label1)的例子得出
public partial class Form1 : Form
{
private bool mouseDown;
private Point lastLocation;
public Form1()
{
InitializeComponent();
}
private void pbxBigCat_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseDown = true;
lastLocation = e.Location;
}
}
private void pbxBigCat_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
pbxBigCat.Location = new Point((pbxBigCat.Location.X - lastLocation.X + e.X), (pbxBigCat.Location.Y - lastLocation.Y) + e.Y);
label1.Text = pbxBigCat.Location.X.ToString() + "/" + pbxBigCat.Location.Y.ToString();
}
}
private void pbxBigCat_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
}
一切的SO提到文章。
我以为代码可以很好地工作,但没有什么真正发生,我甚至在一个表单上试了一下,你给我的推荐链接中没有关于如何保存位置的信息。 –
然后你没有阅读完整的主题。您可以使用mousemove事件来获取实际位置,然后将其保存用于您的目的。 – nabuchodonossor
我又试了一遍,它正在运行。我可以在图片中移动。 – nabuchodonossor
wpf?的WinForms?也许是网络? –
C#,winforms bro .. –