퇴근5분전

드래그앤드롭 구현인데

SQL Management 처럼

테이블 트리에서 -> 에디터폼에 목록 드래그시 Text 마우스 커서 위치에
데이타 넣는 처리.

훈스에서 어떤 분이 질문한거 잠깐 구현해서 넣었음.
이를 글로 적어둠.

TextBox에 드래그오버시 Textbox에 캐럿을 마우스현위치로 이동시키는 처리가 필요했음.
GetPositionFromCharIndex  과
GetCharIndexFromPosition  로 처리가 가능해짐.



 textBox.ArrowDrop = true;

   private void button3_MouseDown(object sender, MouseEventArgs e)
        {
            textBox1.DoDragDrop(button3.Text, DragDropEffects.All);
        }

        private void textBox1_DragEnter(object sender, DragEventArgs e)
        {
            textBox1.Focus();
            e.Effect = e.AllowedEffect;           
        }

        private void textBox1_DragOver(object sender, DragEventArgs e)
        {                      
            if ((textBox1.PointToClient(new Point(e.X, e.Y)).X ) > textBox1.GetPositionFromCharIndex(this.textBox1.TextLength - 1).X)
            {
                this.textBox1.SelectionStart = this.textBox1.TextLength;
            }
            else
            {
                textBox1.SelectionStart = textBox1.GetCharIndexFromPosition(textBox1.PointToClient(new Point(e.X, e.Y)));
            }
        }

        private void textBox1_DragDrop(object sender, DragEventArgs e)
        {          
            this.textBox1.Paste(e.Data.GetData( typeof(string)).ToString());
        }