powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с базой в WinForm: перетаскивание записей мышью
8 сообщений из 8, страница 1 из 1
Работа с базой в WinForm: перетаскивание записей мышью
    #38061361
mahoney93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Имеется такая задача, работа идет с базой в WinForms, суть такова: мы создаем свою базу данных, в данном случае имеется три таблицы(работники, отделы, и сводная таблица). В форме мы подключаемся к базе, далее становится интереснее(помечу это момент флажком "point1"), после загрузки базы, мы должны видеть три таблицы, из них которые две заполнены(работники: имена, и отделы: названия отделов), и третья пустая таблица, так вот, задание заключается в том, что мы берем мышкой по имени работника и перетаскиваем его в отдел, в другую таблицу, когда мы перетащили, то мы отпускуем мышь и вауля, в сводной таблице мы должны получить строку(работник|отдел).
теперь вот в чем вопрос, вернемся к флажку "point1" я долго мучился и нашел два варианта загрузки данных: это через dataGridView и позже через listBox, первый вариант меня не особо обрадывал, тем что не в интерете довольно мало статей как это можно реализовать, второй варинат более хороший(мое мнение) по крайней мере есть информация, но она заканчивается тем, что перенос осуществляется в одном listBox'е, уже мучаюсь 3 дня безвылазно, все не могу придумать. помогите чем сможете, пожалуйста)
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38061513
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
По моему Вы слишком усложняете интерфейс. На форме достаточно одного грида с двумя полями. Первое поле - текстовое - мя. Второе, комбобокс - отдел.
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38061601
mahoney93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом-то и заключается задание, что мы перетаскиваем из одного грида в другой.
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38062051
sews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример для переноса в DataGridView2

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  DataGridView1.AllowDrop = True
       DataGridView2.AllowDrop = True
	
	Private Sub DataGridView2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragEnter
        e.Effect = DragDropEffects.Copy
    End Sub

    Private Sub DataGridView2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragDrop
        If e.Data.GetDataPresent(GetType(DataRowView)) Then
            Dim Row As DataRowView = DirectCast(e.Data.GetData(GetType(DataRowView)), DataRowView)
            Dim ff = Row.Row.ItemArray
            Dim ind As Integer = Row.Row("IDS")
            ' Далее ищите  по ind ,добавляете в таблицу данные
        End If
    End Sub
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38062970
mahoney93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем разберу, что Вы написали.
Можно как-нибудь более подробно, в данном случае visual studio ругается на все, идею вроде понял, но все равно не хочет работать...
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38064740
sews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mahoney93,

На С# Перевел через конвертор

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private void DataGridView2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
	e.Effect = DragDropEffects.Copy;
}

private void DataGridView2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
	if (e.Data.GetDataPresent(typeof(DataRowView))) {
		DataRowView Row = (DataRowView)e.Data.GetData(typeof(DataRowView));
		dynamic ff = Row.Row.ItemArray;
		int ind = Row.Row["IDS"];
		// Далее ищите  по ind ,добавляете в таблицу данные
	}
}
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38065292
mahoney93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, теперь заработало, только я уже вчера стал писать немного через другой вариант, но там все безуспешно оказалось...
если вам не трудно, можете продолжить, как это реализовать, просто на c# пишу всего месяц, а в Win Forms всего неделю, сложно сразу все понять.

вот код, как я писал, через обработчик мыши:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
        private Rectangle dragBoxFromMouseDown;
        private int rowIndexFromMouseDown;
        private int rowIndexOfItemUnderMouseToDrop;

        private void stuffDataGridView_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                if (dragBoxFromMouseDown != Rectangle.Empty &&
                  !dragBoxFromMouseDown.Contains(e.X, e.Y))
                {

                    DragDropEffects dropEffect = stuffDataGridView.DoDragDrop(
                    stuffDataGridView.Rows[rowIndexFromMouseDown],
                    DragDropEffects.Move);
                }
            }
        }





        private void stuffDataGridView_MouseDown(object sender, MouseEventArgs e)
        {
            rowIndexFromMouseDown = stuffDataGridView.HitTest(e.X, e.Y).RowIndex;

            if (rowIndexFromMouseDown != -1)
            {

                Size dragSize = SystemInformation.DragSize;

                dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2),
                                        e.Y - (dragSize.Height / 2)),
                          dragSize);
            }
            else
                dragBoxFromMouseDown = Rectangle.Empty;
        }







        private void departmentDataGridView_DragDrop(object sender, DragEventArgs e)
        {
            Point clientPoint = departmentDataGridView.PointToClient(new Point(e.X, e.Y));

            rowIndexOfItemUnderMouseToDrop =
              departmentDataGridView.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

            if (e.Effect == DragDropEffects.Move)
            {
                DataGridViewRow rowToMove = e.Data.GetData(
                  typeof(DataGridViewRow)) as DataGridViewRow;
                ouputDataGridView.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);

            }
        }
...
Рейтинг: 0 / 0
Работа с базой в WinForm: перетаскивание записей мышью
    #38068788
sews
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mahoney93,

Ваши способы для загрузки данных в вашем случае не подходят.
У вас есть связанные таблицы.
Грузите их в DataSet используйте для привязки BindingSource ,а DataGridView для отображения,редактирования данных.
А если еще и BindingNavigator напрячь,то он и добавить данные поможет,удалить и т.д.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с базой в WinForm: перетаскивание записей мышью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]