[英]c# panel to panel button dragdrop only 1 time working
public Form1() {
InitializeComponent();
panel1.AllowDrop = true;
panel2.AllowDrop = true;
panel1.DragEnter += panel_DragEnter;
panel2.DragEnter += panel_DragEnter;
panel1.DragDrop += panel_DragDrop;
panel2.DragDrop += panel_DragDrop;
button1.MouseDown += button1_MouseDown;
}
void button1_MouseDown(object sender, MouseEventArgs e) {
button1.DoDragDrop(button1, DragDropEffects.Move);
}
void panel_DragEnter(object sender, DragEventArgs e) {
e.Effect = DragDropEffects.Move;
}
void panel_DragDrop(object sender, DragEventArgs e) {
((Button)e.Data.GetData(typeof(Button))).Parent = (Panel)sender;
}
Codes in stackoverflow... Stackoverflow中的代码...
I am trying for count added button in panel with foreach : 我正在尝试使用foreach在面板中添加计数按钮:
int n = 0;
foreach (Control btn in panel.Controls) {
n+=1;
}
Label.Text = n.ToString();
But output : 1 但输出:1
Then, i can't dropped button's text with BringToFront(); 然后,我无法使用BringToFront()删除按钮的文本;
Would you try on VS C# with two panel and 3-4 buttons this action and see problem? 您是否会尝试使用带有两个面板和3-4个按钮的VS C#来查看问题?
Works great...maybe explain in more detail what issue you are having? 效果很好...也许可以更详细地说明您遇到的问题?
void button1_MouseDown(object sender, MouseEventArgs e)
{
Button btn = sender as Button;
Point offset = new Point(e.X, e.Y);
btn.Tag = offset;
btn.DoDragDrop(btn, DragDropEffects.Move);
}
void panel_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
void panel_DragDrop(object sender, DragEventArgs e)
{
Panel pnl = sender as Panel;
Point pt = pnl.PointToClient(new Point(e.X, e.Y));
Button btn = e.Data.GetData(typeof(Button)) as Button;
Point offset = (Point)btn.Tag;
pt.Offset(-1 * offset.X, -1 * offset.Y);
btn.Location = pt;
btn.Parent = pnl;
}
private void btnCount_Click(object sender, EventArgs e)
{
label1.Text = "Buttons: " + panel1.Controls.OfType<Button>().ToList().Count.ToString();
label2.Text = "Buttons: " + panel2.Controls.OfType<Button>().ToList().Count.ToString();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.