Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
1

Как получить данные файла, открытого из другой формы?

18.07.2014, 10:59. Показов 1490. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста...
Допустим , я открываю файл в первой форме, и нужно данные перенести в другую форму,чтобы там уже разобрать файл, как это сделать ? Вот код первой формы
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace KonvertCSV {
    public partial class Form1 : Form 
    {
        public Form1() 
        { InitializeComponent(); }
 
        private String csv_Excel = String.Empty;
        private string csv_FileDir = String.Empty;
        private string csv_FilePath = String.Empty;
 
        private void search_csvFile_Click(object sender, EventArgs e)
        {
            open_csvFile.InitialDirectory = Application.ExecutablePath.ToString();
            open_csvFile.Filter = "CSV Files (*.csv) |*.csv|All files (*.*)|*.*";
            open_csvFile.FilterIndex = 1;
            open_csvFile.RestoreDirectory = true;
            if (open_csvFile.ShowDialog() == DialogResult.OK)
            { this.textBox1.Text = open_csvFile.FileName.ToString(); }
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {                    }
 
        private void button2_Click(object sender, EventArgs e) // кнопка для перехода в другую форму
        {
 
        }
 
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2014, 10:59
Ответы с готовыми решениями:

Как Получить Данные Из Другой Формы?
Есть 2 формы: 1) Персонал с полем personName 2) Руководитель с полем OrgLeader на лебел...

Как из одной формы получить данные другой?
хай ол пипл... у меня ситуация вот например у меня на форме есть текст(лейбл) и естькнопка(баттон)...

Как получить данные из ComboBox'а с другой формы?
Использую С++Builder6. Имеется две формы и организован переход между ними через hide\show. На...

Как считать данные в TextBox из открытого файла в OpenFileDialog
Как считать данные в textbox из открытого файла в openfiledialog?

12
41 / 33 / 24
Регистрация: 09.06.2012
Сообщений: 144
18.07.2014, 11:53 2
У любого класса есть конструктор. Form - это класс, его конструктор указан у вас в примере кода:
C#
1
2
public Form1() 
        { InitializeComponent(); }
В этот конструктор можно пихнуть любую переменную, как в функцию, к примеру переменная string:
C#
1
2
3
4
5
public Form1(string Text) 
{ 
      InitializeComponent(); 
      /*Делаю тут что-нибудь с переменной Text*/
}
Соответственно изменится объявление переменной типа Form1:
C#
1
var NewForm = new Form1("тут вот наша переменная");
Или можно запилить глобальную переменную соответствующую вашему типу хранения информации из файла/о файле
её лучше объявить в файле проекта "Program.cs" в виде:

C#
1
2
3
4
5
6
7
8
9
static class Program
{
    ...
    static void Main()
    {
          ...
    }
}
public static string Text = "блаблабла";
Обращение к этой переменной везде одинаковое, как к локальной переменной:
C#
1
2
3
4
private void search_csvFile_Click(object sender, EventArgs e)
{
      Text = "";
}
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
18.07.2014, 12:20  [ТС] 3
SmashDream, да, это всё понятно, но мне нужно не вывод текста по нажатии кнопки. Так попробую объяснить : у меня на Форме 1 есть элементы, 2 кнопки и TextBox1, При нажатии первой кнопки, открывается окно выбора файла. Выбрал, путь к файлу добавился в TextBox1, всё. Теперь при нажатии кнопки 2 у меня данные этого файла должны переместиться во вторую форму, я знаю что, допустим, переход из одной формы можно осуществить при помощи кода
C#
1
2
3
4
5
6
7
8
9
10
11
// код на кнопку в первой форме
        private void button2_Click(object sender, EventArgs e) 
        {
            Form2 FrI = new Form2(); 
            FrI.Show(this); 
            this.Hide(); 
//код на второй форме
        private void Form2Closing(object sender, FormClosingEventArgs e) 
        {
            Form1 Frm1 = this.Owner as Form1; 
            Frm1.Show();
а как перенести выбранный файл , не знаю. Искал в интернете, ничего не нашёл
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
18.07.2014, 12:42 4
Цитата Сообщение от ked Посмотреть сообщение
а как перенести выбранный файл , не знаю.
ked, вообще файл - это массив байт. Сделайте статик-переменную типа List<byte> в файле Program.cs (не глобальную! В шарпе таких нет, если что. Для создания глобальных переменных на другой уровень (IL)), и в этот лист вставляйте свой файл как массив байт. С другой формы уже оттуда и забирайте.
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
18.07.2014, 12:54  [ТС] 5
insite2012,
Цитата Сообщение от insite2012 Посмотреть сообщение
С другой формы уже оттуда и забирайте.
Немного не понял, как это? Не мог бы объяснить
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
18.07.2014, 13:08 6
ked, измените файл Program.cs вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// 
        public static List<byte> myCommonData = new List<byte>();
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Потом из любой точки программы и из любой формы обращайтесь к массиву байт вот так:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.IO;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += delegate 
            {
                //Заполняем общий массив байтами при загрузке первой формы (ну или когда это понадобится)
                Program.myCommonData.AddRange(File.ReadAllBytes(@"C:\111.dat"));
            };
        }
    }
}
И забирайте их оттуда вот так:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            this.Load += delegate 
            {
                List<byte> recievedData = Program.myCommonData;
                //Тут делаем с массивом байт что хотим.
            };
        }
    }
}
1
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
18.07.2014, 13:52  [ТС] 7
insite2012, Большое спасибо, теперь осталось разобраться с массивом байт , и как занести потом это в checkedListBox1, чтобы добавлялись столбцы из файла
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
18.07.2014, 13:55 8
Цитата Сообщение от ked Посмотреть сообщение
теперь осталось разобраться с массивом байт
А что с ним разбираться... Если файл текстовый - то используйте, к примеру, вместо List<byte> List<string>, и работайте со строками...
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
18.07.2014, 14:26  [ТС] 9
Цитата Сообщение от insite2012 Посмотреть сообщение
А что с ним разбираться... Если файл текстовый - то используйте, к примеру, вместо List<byte> List<string>, и работайте со строками...
Файл .csv (открываю Excel'ем) Получается текст только в шапке, остальное числа

Добавлено через 25 минут
insite2012,
Цитата Сообщение от insite2012 Посмотреть сообщение
Program.myCommonData.AddRange(File.ReadAllBytes(@"C:\111.dat"));
ругается на это, у меня уже задан путь к файлу, и предварительно я не могу здесь прописывать путь к файлу , как можно это исправить ? Вот мой заданный путь:
Цитата Сообщение от ked Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
private void search_csvFile_Click(object sender, EventArgs e)
           {
                 open_csvFile.InitialDirectory = Application.ExecutablePath.ToString();
                 open_csvFile.Filter = "CSV Files (*.csv) |*.csv|All files (*.*)|*.*";
                 open_csvFile.FilterIndex = 1;
                 open_csvFile.RestoreDirectory = true;
                 if (open_csvFile.ShowDialog() == DialogResult.OK)
                { this.textBox1.Text = open_csvFile.FileName.ToString(); }
           }
private void textBox1_TextChanged(object sender, EventArgs e)
            {                      }
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
18.07.2014, 15:22 10
ked, так укажите свой путь... Это же пример.
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
18.07.2014, 21:43  [ТС] 11
insite2012, так я указал путь, без указания на имя файла, а он мне выдал ошибку
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
18.07.2014, 22:14 12
Цитата Сообщение от ked Посмотреть сообщение
я указал путь, без указания на имя файла
Так укажите полный путь, к файлу. Я же не знаю, какой у вас файл и где он находится.
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
19.07.2014, 15:09  [ТС] 13
insite2012, Так файлы постоянно разные будут, разные имена файлов и возможно в разных местах, вот в чём проблема
0
19.07.2014, 15:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2014, 15:09
Помогаю со студенческими работами здесь

Необходимо получить данные из Edit другой формы
Не могу получить данные из Edit другой формы, почему не работает Label2-&gt;Caption =...

Как из TextBoxа одной формы скопировать введённые данные в TextBox другой формы?
Здравствуйте. Помогите с вопросом, как из TextBoxа одной формы скопировать введённые данные в...

Как передать в метод формы данные из другой формы?
Народ, подскажите юзеру: создал на Visual C++ 2005 с помощью designer'а Form1 с единственной...

Как из TextBoxa одной формы скопировать введённые данные и вставить в TextBox другой формы, кнопкой?
0000


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru