Перетаскивание C# от поля списка до treeview

Вместо того, чтобы помещать scrollZoom: true в макет, попробуйте поместить его в дерево конфигурации, например:

const Plot = createPlotlyComponent(Plotly);

ReactDOM.render(
  React.createElement(Plot, {
    data: [...],
    layout: {...}, 
    config: {
      scrollZoom: true,
    }
  }),
  document.getElementById('root')
);

11
задан Benjamin 5 February 2014 в 15:33
поделиться

2 ответа

Это было некоторое время, так как я смешал с, Перетаскивают/Отбрасывают так, я полагал, что запишу быстрый образец.

В основном у меня есть форма с полем списка слева и treeview справа. Затем я поместил кнопку на вершину. Когда кнопка нажата, она просто помещает дату следующих десяти дней в поле списка. Это также заполняет TreeView с 2 родительскими узлами и двумя дочерними узлами. Затем просто необходимо обработать все последующее, перетаскивают/отбрасывают события, чтобы заставить его работать.

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.treeView1.AllowDrop = true;
            this.listBox1.AllowDrop = true;
            this.listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
            this.listBox1.DragOver += new DragEventHandler(listBox1_DragOver);

            this.treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
            this.treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.PopulateListBox();
            this.PopulateTreeView();
        }

        private void PopulateListBox()
        {
            for (int i = 0; i <= 10; i++)
            {
                this.listBox1.Items.Add(DateTime.Now.AddDays(i));
            }
        }

        private void PopulateTreeView()
        {
            for (int i = 1; i <= 2; i++)
            {
                TreeNode node = new TreeNode("Node" + i);
                for (int j = 1; j <= 2; j++)
                {
                    node.Nodes.Add("SubNode" + j);
                }
                this.treeView1.Nodes.Add(node);
            }
        }

        private void treeView1_DragDrop(object sender, DragEventArgs e)
        {

            TreeNode nodeToDropIn = this.treeView1.GetNodeAt(this.treeView1.PointToClient(new Point(e.X, e.Y)));
            if (nodeToDropIn == null) { return; }
            if(nodeToDropIn.Level > 0)
            {
                nodeToDropIn = nodeToDropIn.Parent;
            }

            object data = e.Data.GetData(typeof(DateTime));
            if (data == null) { return; }
            nodeToDropIn.Nodes.Add(data.ToString());
            this.listBox1.Items.Remove(data);
        }

        private void listBox1_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

        private void treeView1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            this.listBox1.DoDragDrop(this.listBox1.SelectedItem, DragDropEffects.Move);
        }


    }
22
ответ дан 3 December 2019 в 04:34
поделиться

Вы хотите использовать GetItemAt (Точка точки) функция для перевода X, Y местоположение к listview объекту.

Вот довольно хорошая статья об этом: Перетаскивание Используя C#.

Для создания объекта перетащенным видимый при перетаскивании необходимо использовать COM ImageList, который хорошо описан в следующей статье Custom Drag-Drop Images Using ImageLists.

2
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: