Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,970

HOME > .NET Framework > Forum > C# WinApp ขอแนวทางในการ DragDrop ใน DataGridView หน่อยครับ



 

C# WinApp ขอแนวทางในการ DragDrop ใน DataGridView หน่อยครับ

 



Topic : 125745



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



1311

ไม่แน่ใจเหมือนกันนะครับว่าเขาจะเรียก DragDrop ไม๊
จากรูป คือผมมี รหัสตัวอย่าง เช่น W 0002(ฝั่งซ้าย)พอคลิกก็จะปรากฎ parameter หรือรายการวิเคราะห์(ฝั่งขวา)

ทีนี้ User อยากให้ลาก parameter มาลงในรหัสตัวอย่างได้ด้วยครับ

อย่าง เช่น W 0002 มีรายการวิเคราะห์ Arsenic Cadmium Copper Lead Nikel


W 0070 ก็มีรายการวิเคราะห์ Arsenic Cadmium Copper Lead Nikel(เหมือน W 0002 เลย)


คือผมอยากคลิกที่ datagrid ของ รายการวิเคราะห์ ใน W 0002(ฝั่งขวา)
แล้วลากมาลงใน datagrid ของ Rows W 0070 (ฝั่งซ้าย)

แบบนี้ครับ


ปล. ยังไม่เคยศึกษาเกี่ยวกับ Drag Drop เลยครับนึกว่าชาตินี้จะไม่ได้ใช้ซะอีก



Tag : .NET, Win (Windows App), C#, VS 2012 (.NET 4.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-12-15 15:45:05 By : lamaka.tor View : 1281 Reply : 10
 

 

No. 1



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

1311๘1

คือผมจะใส่ Event click ครับ
แต่ไม่รู้เขาเรียกว่าอะไร

RowHeaderMouseClick กับ ColumnHeaderMouseClick ก็ไม่ได้ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-15 15:51:31 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ติดปัญหาเรื่อง DragEventArgs to RowIndex ครับ(นึกว่าจะฉลุยแล้วซะอีก )
คืออยากทราบ RowIndex ของตาราง sample ครับ
ว่าจะเพิ่มให้ sampleID ตัวไหน
Code (C#)
private void dataGridView2_DragDrop(object sender, DragEventArgs e)
        {
            DataGridViewSelectedRowCollection rows = (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection));
            
            rowIndexFromMouseDown = dataGridView2.HitTest(e.X, e.Y).RowIndex;
            MessageBox.Show(e.X + " "+ e.Y+ " " + rowIndexFromMouseDown);
           

            for (int i = rows.Count-1; i >=0  ; i--)
            {
                if (!string.IsNullOrEmpty("" + rows[i].Cells[0].Value))
                    dataGridView2.Rows.Add(rows[i].Cells[0].Value, rows[i].Cells[1].Value, rows[i].Cells[2].Value);
            }
          /*  foreach (DataGridViewRow row in rows)
            {

                if (!string.IsNullOrEmpty("" + row.Cells[0].Value))
                dataGridView2.Rows.Add(row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value);
               
                //dataGridView1.Rows.Remove(row);
            }*/


        }



ประวัติการแก้ไข
2016-12-15 23:17:46
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-15 22:44:22 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

สงสัยวันนี้ท่าทางจะบ้า

ถามเองแล้วก็ตอบเอง
สรุป ได้แล้วนะครับ

//RowIndex
Code (C#)
public static int DragDropRowIndex(this System.Windows.Forms.DataGridView dgv, System.Windows.Forms.DragEventArgs e)
        {
            int r = 0;
            System.Drawing.Point p = dgv.PointToClient(new System.Drawing.Point(e.X, e.Y));
            r = dgv.HitTest(p.X, p.Y).RowIndex;
            return r;
        }


โค้ดบ้านๆ ประมาณนี้ครับครับ
Code (C#)
static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmDragNDrop_2() );
        }
        public static int DragDropRowIndex(this System.Windows.Forms.DataGridView dgv, System.Windows.Forms.DragEventArgs e)
        {
            int r = 0;
            System.Drawing.Point p = dgv.PointToClient(new System.Drawing.Point(e.X, e.Y));
            r = dgv.HitTest(p.X, p.Y).RowIndex;
            return r;
        }
    }




Code (C#)
public partial class frmDragNDrop_2 : Form
    {
        public frmDragNDrop_2()
        {
            InitializeComponent();
            this.dataGridView1.AllowDrop = true;
            this.dataGridView2.AllowDrop = true;
        }
        private int rowIndexFromMouseDown;

        private void frmDragNDrop_2_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
                dataGridView1.Rows.Add("Test " + i, "Tor " + i);
        }

        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            dataGridView1.DoDragDrop(dataGridView1.SelectedRows, DragDropEffects.Copy);
        }

        private void listBox2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            DataGridViewSelectedRowCollection rows = (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection));
            foreach (DataGridViewRow row in rows)
            {
                try
                {
                    listBox2.Items.Add(row.Cells[1].Value);
                }
                catch { }
            }

        }

        private void listBox2_DragEnter(object sender, DragEventArgs e)
        {
           if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection)))
                e.Effect = DragDropEffects.Copy;
        }

        private void dataGridView2_DragDrop(object sender, DragEventArgs e)
        {
            DataGridViewSelectedRowCollection rows = (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection));
            rowIndexFromMouseDown = dataGridView2.DragDropRowIndex(e);
            for (int i = rows.Count-1; i >=0  ; i--)
            {
                if (!string.IsNullOrEmpty("" + rows[i].Cells[0].Value))
                    dataGridView2.Rows.Add(rows[i].Cells[0].Value, rows[i].Cells[1].Value, rows[i].Cells[2].Value);
            }
        }

        private void dataGridView2_DragEnter(object sender, DragEventArgs e)
        {
            Text = "dataGridView2_DragEnter";
            if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection))) e.Effect = DragDropEffects.Copy;
        }

        private void dataGridView2_DragOver(object sender, DragEventArgs e)
        {
            Text = "dataGridView2_DragOver";
            if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection))) e.Effect = DragDropEffects.Copy;
        }

       
    }


ต่อไปคือ
1311
คลิก ลาก เพื่อเพิ่ม rows แบบ excel ครับ

ประมาณว่า W 0001 เป็นน้ำดื่ม รายการวิเคราะห์ Cadmium Iron Lead
W 0002 เป็นน้ำดื่ม รายการวิเคราะห์ Cadmium Iron Lead

อยากจะให้ User กรอกข้อมูล W 0001 แล้วก็ลากลงมา เป็น W 0002 ได้เลยครับ

ยังหาวิธีใช้เม้ายังไม่ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-15 23:39:36 By : lamaka.tor
 


 

No. 4



โพสกระทู้ ( 328 )
บทความ ( 0 )



สถานะออฟไลน์


เดี๋ยวซักหน่อยจะมีคนเข้ามาตอบ เห็นเล่นโพสคุณตลอด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 00:08:54 By : Luz
 


 

No. 5



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

พูดถึงว่าการลากนี่

ภาษา โปรแกรมเมอร์ มันคือ MouseMove ไม๊ครับ
เห็น MouseEventHandler ก็มีกันแค่นี้
Code
Mouse events occur in the following order: MouseEnter MouseMove MouseHover / MouseDown / MouseWheel MouseUp MouseLeave



ปล.ผมอยากทำให้ Cursor เป็น + เมื่อเราคลิกช่องสุดท้ายเหมือน Excel ด้วยก็แหล่มนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 09:40:30 By : lamaka.tor
 


 

No. 6



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

1311

สงสัยทำไมพอลากไปแล้ว dataGridView2 ก็เพิ่มข้อมูลไปแล้ว

แต่ทำไม dataGridView1 ยังมีร่องรอยอารยธรรม การ คลิกเลือกอยู่ละครับ

ต้อง เอามันออกตรงไหนครับ

Code (C#)
public partial class frmDgvDragDrop : Form
    {
        public frmDgvDragDrop()
        {
            InitializeComponent();
            this.dataGridView1.AllowDrop = true;
            this.dataGridView2.AllowDrop = true;
            for (int i = 0; i < 10; i++)
                dataGridView1.Rows.Add("Test " + i, "Tor " + i);
            dataGridView1.MouseDown+=dataGridView1_MouseDown;
            dataGridView2.DragDrop += dataGridView2_DragDrop;
            dataGridView2.DragEnter+=dataGridView2_DragEnter;
        }
        private int rowIndexFromMouseDown;

        private void frmDgvDragDrop_Load(object sender, EventArgs e)
        {

        }
        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {

            dataGridView1.DoDragDrop(dataGridView1.SelectedRows, DragDropEffects.Copy);
        }
        private void dataGridView2_DragDrop(object sender, DragEventArgs e)
        {
            DataGridViewSelectedRowCollection rows = (DataGridViewSelectedRowCollection)e.Data.GetData(typeof(DataGridViewSelectedRowCollection));
            rowIndexFromMouseDown = dataGridView2.MouseDownRowIndex(e);
            MessageBox.Show("" + rowIndexFromMouseDown);
            for (int i = rows.Count - 1; i >= 0; i--)
            {
                if (!string.IsNullOrEmpty("" + rows[i].Cells[0].Value))
                    dataGridView2.Rows.Add(rows[i].Cells[0].Value, rows[i].Cells[1].Value, rows[i].Cells[2].Value);
            }
            e = null;
        }

        private void dataGridView2_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(DataGridViewSelectedRowCollection))) e.Effect = DragDropEffects.Copy;
        }

    }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 11:46:35 By : lamaka.tor
 


 

No. 7



โพสกระทู้ ( 820 )
บทความ ( 0 )



สถานะออฟไลน์


ขยันมาก ๆ ครับ
นับถือเลย

ตัวด้านหน้าของแถว (row header) ปิดทิ้งไหมครับ
อาจจะสวยขึ้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 13:16:08 By : fonfire
 


 

No. 8



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : fonfire เมื่อวันที่ 2016-12-16 13:16:08
รายละเอียดของการตอบ ::
มันตัดได้รึครับ

โอ๊วววววว ความรู้ใหม่อีกแล้ว
ว่าแต่ตัดไงครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 13:20:00 By : lamaka.tor
 


 

No. 9



โพสกระทู้ ( 820 )
บทความ ( 0 )



สถานะออฟไลน์


.RowHeadersVisible = false
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 13:30:20 By : fonfire
 


 

No. 10



โพสกระทู้ ( 4,299 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

เหมือนว่าพอเราใช้

Code
AllowDrop = true


datagridviewcombobox กดเลือกไม่ได้ครับ
ไม่รู้ว่าเกี่ยวกันไม๊
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-12-16 14:31:00 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# WinApp ขอแนวทางในการ DragDrop ใน DataGridView หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , pangpond.com , pangpond.co.th , สำนักงานบัญชี.com , รถมือสอง

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2022 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่