Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 21

Открытие файла после dataGridView1_CellClick

25.10.2017, 09:19. Показов 1333. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане! Помогите, пожалуйста, разобраться в таком вопросе. Есть Datagridview1, куда заносятся данные с первого файла, есть Datagridview2, куда при клике по первой колонке DataGridview1, открывается диалоговое окно для выбора второго файла, с последующим занесением данных в Datagridview2. Вопрос в том, можно ли сделать так, чтобы диалоговое окно не открывалось, а при клике команда проходила для открытия конкретного файла, то есть сделать по типу связки: открываем первый файл в Datagridview1, а при клике уже сразу же открывается другой файл в Datagridview2.
Буду очень признателен, если подскажите что-нибудь по данному вопросу. Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2017, 09:19
Ответы с готовыми решениями:

Метод dataGridView1_CellClick не запускается
Доброе время суток, я мучаюсь с датагридом при создании метода не получается войти в него через интерфейс.. private void ...

Открытие файла после создания
Все сделал как в примерах, вроде простейший код, а вылазит ошибка "I/О 32" var f:system.text; filecreate(ads+'cat.txt'); ...

Первое НЕ открытие .exe файла после компилятора
Во многих учебниках предлагают вначале всегда простую программу вывода текста. Предлагают следующее: 1. Перепишите программу, сохраните...

7
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
25.10.2017, 09:53
Можно использовать дефолтный файл, и сделать чтобы при необходимости можно было поменять его.
Либо в зависимости от имени первого файла создавать второй файл.
А так достаточно размытый вопрос.
0
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 21
25.10.2017, 10:08  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                dataGridView2.Rows.Clear(); 
                var selectedValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                if (!string.IsNullOrEmpty(selectedValue))
                {
                    progressBar1.Visible = true;
                    OpenFileDialog openfile = new OpenFileDialog(); 
                    openfile.Filter = "(*.bdt*)|*.bdt*"; 
                    openfile.Multiselect = false; 
                    if (openfile.ShowDialog() == DialogResult.OK)
                    {
                        string _pathToFileWithData = openfile.FileName;
                        var fileReader = new SignalReader(_pathToFileWithData, this, FileDownloaded);
                        fileReader.ReadFileInSeparateThread(SignalReader.HashCharacter + selectedValue);
                    }
                }
            }
Вот тут использую открытие файла через диалоговое окно, это событие происходит, когда первый файл мы уже открыли в Datagridview1, потом уже кликаем и срабатывает открытие диалогового окна где я выбираю файл, который мне нужен. Просто вопрос в том, как то можно попробовать сделать, чтобы файл автоматически подгрузился без вызова диалогового окна, то есть Document1 загрузили и после клика Document1 (другое только расширение) подгрузился.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
25.10.2017, 10:25
Лучший ответ Сообщение было отмечено Atexandr как решение

Решение

Atexandr, ну так уберите из Вашего кода диалог и задайте файл (но учтите что этот файл должен быть именно там куда вы обращаетесь) :
C#
1
2
3
4
5
6
7
8
9
10
11
12
if (e.ColumnIndex == 0)
            {
                dataGridView2.Rows.Clear(); 
                var selectedValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                if (!string.IsNullOrEmpty(selectedValue))
                {
                    progressBar1.Visible = true;
                    string _pathToFileWithData = "Путь к требуемому файлу";
                    var fileReader = new SignalReader(_pathToFileWithData, this, FileDownloaded);
                    fileReader.ReadFileInSeparateThread(SignalReader.HashCharacter + selectedValue);
                }
            }
1
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 21
25.10.2017, 10:35  [ТС]
Спасибо большое за подробный ответ SeIZVeIZ. Я вот думаю, что делать, когда я задам один путь, а что делать, если я буду загружать Document2, Document3 и т.д. в Datagridview1, и к ним сделать такую же привязку как к Document1, то есть с одним путем будет открываться все время файл связанный с Document1, а для других можно сделать свои привязки?
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
25.10.2017, 10:53
Лучший ответ Сообщение было отмечено Atexandr как решение

Решение

Atexandr, ну для этого нужно либо сделать доп опцию с заданием привязки, либо всё же использовать диалог открытия файла всегда. Ну можно ещё изначально создать словарь где будет хранится тип привязки, 1 файл и его 1 файл, 2 файл и его 2 файл и т.д.
1
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 21
25.10.2017, 13:45  [ТС]
Вот если я использую диалоговое окно, то у меня когда я каждый раз кликаю на первый столбец Datagridview1, открывается опять диалоговое окно для выбора файла и так каждый раз по клику на каждое значение, а можно как то сделать, чтобы один раз вызвали диалоговое окно и пока программа работает не приходилось каждый раз выбирать файл.
0
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 21
30.10.2017, 10:03  [ТС]
Решил вопрос.

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
public Form1()
        {
            InitializeComponent();
        }
 
        OpenFileDialog openfile = new OpenFileDialog(); 
 
        private void button1_Click(object sender, EventArgs e)
        {          
            openfile.Filter = "(*.hdt*)|*.hdt*"; 
            openfile.Multiselect = false;            
            if (openfile.ShowDialog() != DialogResult.OK)
            {
                MessageBox.Show("Вы не выбрали файл для открытия", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            string[] rows = File.ReadAllLines(openfile.FileName);
            dataGridView1.Rows.Clear();
            for (int i = 0; i < rows.Length; i++)
                dataGridView1.Rows.Add(rows[i].Split("|".ToCharArray()));
        }
 
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                dataGridView2.Rows.Clear(); 
                var selectedValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                if (!string.IsNullOrEmpty(selectedValue))
                {
                    progressBar1.Visible = true;
                    //OpenFileDialog openfile = new OpenFileDialog();
                    //openfile.Filter = "(*.bdt*)|*.bdt*";
                    //openfile.Multiselect = false;
                    //if (openfile.ShowDialog() == DialogResult.OK)
                    string substitution = openfile.FileName;                   
                    substitution = substitution.Replace(".hdt", ".bdt");
                    var fileReader = new SignalReader(substitution, this, FileDownloaded);                        
                    fileReader.ReadFileInSeparateThread(SignalReader.HashCharacter + selectedValue);                                                           
                }
            }
        }
Добавлено через 7 минут
Если использовать такой вариант кода
C#
1
2
3
4
OpenFileDialog openfile = new OpenFileDialog();
openfile.Filter = "(*.bdt*)|*.bdt*";
openfile.Multiselect = false;
if (openfile.ShowDialog() == DialogResult.OK)
То каждый раз придется использовать диалоговое окно после клика по индексу, на котором завязан Cell_Click.
Поэтому лучше через замену строк, а именно в нашем случае расширений файлов
C#
1
2
3
4
string substitution = openfile.FileName; * * * * * * * * * 
substitution = substitution.Replace(".hdt", ".bdt");
var fileReader = new SignalReader(substitution, this, FileDownloaded); * * * * * * * * * * * *
fileReader.ReadFileInSeparateThread(SignalReader.HashCharacter + selectedValue); * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * *
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2017, 10:03
Помогаю со студенческими работами здесь

Запись в файл и открытие файла после записи, ошибка в коде
Пожалуйста, подскажите, где здесь ошибка, в vb ошибок не выводит, вроде все правильно, но после вычисления, в RichTextBox2 не выводит...

Открытие xls файла после его редакции через ADO (office 2010)
Всем привет! Столкнулся с такой проблемой! Копирую файл xls, открываю его с помощью ADO, редактирую, сохраняю изменения. Потом этот...

Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла
№ 5. Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла – чистого листа, на...

Загрузка файла в ТекстБокс и открытие файла, зная его полный путь!
Всем привет! Имеется определенная проблема: ввожу в textbox полный путь к файлу, после сохраняю его с помощью кода: Dim FN as...

Открытие файла - запуск макроса и сохранение файла с новым именем
Пытаюсь сделать vba-программу для следующих действий: 1. открытие файла путем его выбора из окна windows; 2. запуск макроса для этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru