두 개의 목록 상자와 지금까지 본 모든 예제에서 끌어서 놓기를 구현하려고하면 실제로 좋은 냄새가 나지 않습니다.두 개의 목록 상자 사이에서 드래그 앤 드롭
다른 사람이 나를 올바르게 구현하도록 안내하거나 표시 할 수 있습니까?
두 개의 목록 상자와 지금까지 본 모든 예제에서 끌어서 놓기를 구현하려고하면 실제로 좋은 냄새가 나지 않습니다.두 개의 목록 상자 사이에서 드래그 앤 드롭
다른 사람이 나를 올바르게 구현하도록 안내하거나 표시 할 수 있습니까?
.net에서 끌어서 놓기 컨트롤을 수행하는 적절한 방법은 두 번째 컨트롤의 DragDrop 이벤트 처리기에서 코드를 실행하는 것입니다.
이상한 냄새가 날 수도 있지만 이는 .NET에서 작동하는 방식입니다. http://www.codeproject.com/KB/dotnet/csdragndrop01.aspx
그것은 꽤 합리적인 자습서를 보인다
구글은이했다. 냄새가 좋지 않다면, 튜토리얼 자체가 가난하지 않고 드래그 앤 드롭으로 API를 사용하는 것이 더 어렵다고 생각합니다.
다음은 샘플 양식입니다. 새 WF 프로젝트를 시작하고 폼에 두 개의 목록 상자를 놓습니다. 코드를 다음과 같이 설정하십시오.
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
listBox1.Items.AddRange(new object[] { "one", "two", "three" });
listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
listBox1.MouseMove += new MouseEventHandler(listBox1_MouseMove);
listBox2.AllowDrop = true;
listBox2.DragEnter += new DragEventHandler(listBox2_DragEnter);
listBox2.DragDrop += new DragEventHandler(listBox2_DragDrop);
}
private Point mDownPos;
void listBox1_MouseDown(object sender, MouseEventArgs e) {
mDownPos = e.Location;
}
void listBox1_MouseMove(object sender, MouseEventArgs e) {
if (e.Button != MouseButtons.Left) return;
int index = listBox1.IndexFromPoint(e.Location);
if (index < 0) return;
if (Math.Abs(e.X - mDownPos.X) >= SystemInformation.DragSize.Width ||
Math.Abs(e.Y - mDownPos.Y) >= SystemInformation.DragSize.Height)
DoDragDrop(new DragObject(listBox1, listBox1.Items[index]), DragDropEffects.Move);
}
void listBox2_DragEnter(object sender, DragEventArgs e) {
DragObject obj = e.Data.GetData(typeof(DragObject)) as DragObject;
if (obj != null && obj.source != listBox2) e.Effect = e.AllowedEffect;
}
void listBox2_DragDrop(object sender, DragEventArgs e) {
DragObject obj = e.Data.GetData(typeof(DragObject)) as DragObject;
listBox2.Items.Add(obj.item);
obj.source.Items.Remove(obj.item);
}
private class DragObject {
public ListBox source;
public object item;
public DragObject(ListBox box, object data) { source = box; item = data; }
}
}
"정말 좋은 냄새가 나지 않습니다." 밝히다. – MiffTheFox
코드 냄새에 대해 들어 본 적이 없습니까? ;) – Jrud
나는이 파티에 3 년이나 늦었지만 Wikipedia에서 코드 냄새에 대해 말하고있는 점에 감사한다. http://en.wikipedia.org/wiki/Code_smell – Surfbutler