Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
1

В одном файле (и Combo) названия сайтов, в другом - ссылки. Как задать соответствие

13.02.2012, 14:52. Просмотров 1445. Ответов 13
Метки нет (Все метки)

Есть проект
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
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 Link
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string[] str;
        string[] str1;
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            try
            {
                str = File.ReadAllLines("BaseName.txt");
                str1 = File.ReadAllLines("BaseLink.txt");
                comboBox1.Items.AddRange(File.ReadAllLines("BaseName.bob"));
 
            }
            catch (Exception)
            { }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            comboBox1.Items.Add(textBox2.Text);
            StreamWriter sw = new StreamWriter("BaseName.txt", true);
            sw.WriteLine(textBox1.Text);
            sw.Close();
            StreamWriter sww = new StreamWriter("BaseLink.txt", true);
            sww.WriteLine(textBox1.Text);
            sww.Close();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start();
        }
    }
}
На форме находится 2 текст бокса, 2 кнопки и 1 комбо бокс

В одном файле (и Combo) названия сайтов, в другом - ссылки. Как задать соответствие


сохраняется 2 файла, в одном ссылки в другом названия сайтов
в комбо боксе отображаются только названия

Теперь сам вопрос, как сделать так, что бы при выборе названия из комбо бокса открывалась нужная ссылка ?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 14:52
Ответы с готовыми решениями:

Заменить ссылки в одном файле на ссылки, находящиеся в другом файле, если последние сегменты ссылок совпадают
Здравствуйте, подскажите, пожалуйста, как можно сделать замену ссылок в txt файле? Заменять нужно...

Как хранить вопросы для теста в одном файле, а ответы - в другом
Здравствуйте. Пришла просить помощи, потому что своим умом решить задачу не могу. Есть задача:...

Можно ли на javascript'e в одном js-файле использовать функции, описанные в другом js-файле?
Подскажите, плз, можно ли на javascript'e в одном js-файле использовать функции, описанные в другом...

Сравнение слов в одном файле со словами в другом файле
Здравствуйте! Суть задачи такая: 1. Первый файл - запросы с городами, второй файл - база городов...

Сравнение слов в одном файле со словами в другом файле
Здравствуйте! Суть задачи такая: 1. Первый файл - запросы с городами, второй файл - база городов...

13
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 15:08 2
Тут смотря сколько сайтов храниться, если мало, то можно сделать метод для определения ссылки по названию, и по номеру строки или по названию возвращать ссылку, или если много, то легче создать *.xml файл или БД
Или как вариант, сохраняешь строки в массив, в одной последовательности а потом по номеру сопоставляешь
Или так: по выбору названия в комбо вписываешь названипе и ссылку в текстбоксы а потом из текстбокса загружаешь
0
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
13.02.2012, 15:10  [ТС] 3
Да )) у меня будет много сайтов )) и в комбо боксе будут отображаться только названия )) в одном файле хранятся ссылки, во втором названия, вот мне и нужно, что бы при выборе ссылки из списка, например строка 5 google переходило на страницу http://www.google.ru
0
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 15:12 4
Сколько примерно сайтов? Возможно лучше будет сделать БД или *.xml - файл. Так и работать быстрее будет!
0
13.02.2012, 15:12
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
13.02.2012, 15:20  [ТС] 5
Цитата Сообщение от DimanRu Посмотреть сообщение
Сколько примерно сайтов?
Ну программа создаётся для хранения ссылок )) тоесть сайтов может быть много .... всё зависит от юзера...

ну возьмём пока пример

1 файл

www.google.ru
www.yandex.ru
www.cyberforum.ru
www.mail.ru
www.speedtest.net

2 файл

Google
Yandex
Кибер форум
Мыло
Тест скорости

порядок сохранения ссылок и названий идентичен
потому так и назвал тему )

вот как подгрузить нужную ссылку, это уже для меня проблемка ...

Добавлено через 1 минуту
Цитата Сообщение от DimanRu Посмотреть сообщение
Возможно лучше будет сделать БД или *.xml - файл. Так и работать быстрее будет!
извиняюсь, но я ещё зеленоват в C# так что с БД дела не имел ...
0
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 15:25 6
Цитата Сообщение от Yakudza Посмотреть сообщение
тоесть сайтов может быть много .... всё зависит от юзера...
Вот, это нужно учитывать!

Xml на мой взгляд тут деальное решение, это и не так сложно как БД, хотя БД тоже не сложно, только 1 - 3 разы непонятно. Поэтому наверно XML тут и нужно использовать.

P.S. Я тоже в C# не крут и с БД почти не работал.
0
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
13.02.2012, 15:27  [ТС] 7
ну а можно же взять 2 файла, и по номеру строки определить место нужной ссылки ?
0
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 15:30 8
Цитата Сообщение от Yakudza Посмотреть сообщение
ну а можно же взять 2 файла, и по номеру строки определить место нужной ссылки ?
Не разу не пробовал, но теоретически - да, сейчас попробую и код скину
1
kolorotur
Эксперт .NET
11321 / 9211 / 2341
Регистрация: 17.09.2011
Сообщений: 15,834
Завершенные тесты: 1
13.02.2012, 15:55 9
Лучший ответ Сообщение было отмечено как решение

Решение

Не забываем, что в комбо боксе элементами могут быть любые объекты, а не только строки.
Если не хотите держать данные в нормальном формате типа того же XML, то можете сделать класс или структуру, описывающую ссылку, и добавлять ее экземпляры в комбо бокс:

C#
1
2
3
4
5
6
7
8
9
10
struct Hyperlink
{
   public string Name { get; set; }
   public string Url { get; set; }
 
   public override string ToString()
   {
      return Name;
   }
}
Потом считываете содержимое обоих файлов:
C#
1
2
3
4
5
var names = File.ReadLines("names.txt");
var urls = File.ReadLines("urls.txt");
 
foreach (var hyperlink in names.Zip(urls, (name, url) => new Hyperlink { Name = name, Url = url }))
   comboBox1.Items.Add(hyperlink);
Ну и, собственно, использование:
C#
1
2
3
4
5
6
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   Hyperlink hyperlink = (Hyperlink)comboBox1.SelectedItem;
   textBox1.Text = hyperlink.Name;
   textBox2.Text = hyperlink.Url;
}
Структуру Hyperlink можно вообще заменить готовой KeyValuePair или Tuple, но так красивее.
3
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 16:29 10
Как и обещал, вот код!

В коде:
C#
1
2
3
string NamesPath; //Путь к именам сайтов
string LinksPath;   //Путь к ссылкам на сайты
                         //Сохрани также свои что бы постоянно не вводить путь
При загрузке формы читаем файл с именами сайтов и записываем в comboBox:

C#
1
2
3
4
5
6
7
8
using (StreamReader namesReader = new StreamReader(NamesPath, Encoding.Default)) //Читаем имена cайтов
{
   string line;
   while ((line = namesReader.ReadLine()) != null) //читаем по одной строке пока не достигнем конца файла
   {
      comboBox1.Items.Add(line); //Добавляем каждую строку в comboBox
   }
}
По нажатию кнопки "Перейти":
C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e) //Ну или какая у тебя там button
{
   string[] links;
   links = File.ReadAllLines(LinksPath, Encoding.Default); //Читаем в массив все ссылки
   int i = comboBox1.SelectedIndex; //Считываем номер пункта выбраный в comboBox
   Process.Start(links[i]); //Грузим нужную ссылку по номеру
}
1
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
13.02.2012, 18:25  [ТС] 11
Спасибо огромное за помощь ))
0
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 18:37 12
Цитата Сообщение от Yakudza Посмотреть сообщение
Спасибо огромное за помощь ))
Всегда рад помочь!
0
Yakudza
1 / 1 / 0
Регистрация: 28.06.2011
Сообщений: 19
13.02.2012, 19:57  [ТС] 13
В общем еще раз всем спасибо за помощь ))

Но сделал всё таки по своему ))) (не без вашей помощи конечно )))

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
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 Проба
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string[] str;
        string[] str1;
        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            try
            {
                str = File.ReadAllLines("BaseName.txt");
                str1 = File.ReadAllLines("BaseLink.txt");
                comboBox1.Items.AddRange(File.ReadAllLines("BaseName.txt"));
 
            }
            catch (Exception)
            { }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            comboBox1.Items.Add(textBox2.Text);
            StreamWriter sw = new StreamWriter("BaseName.txt", true); // Имя сайта
            sw.WriteLine(textBox2.Text);
            sw.Close();
            StreamWriter sww = new StreamWriter("BaseLink.txt", true); // ссылка сайта
            sww.WriteLine(textBox1.Text);
            sww.Close();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            string[] link;
            link = File.ReadAllLines("BaseLink.txt");
            int i = comboBox1.SelectedIndex;
            System.Diagnostics.Process.Start(link[i]);
        }
    }
}
1
DimanRu
692 / 684 / 167
Регистрация: 15.06.2011
Сообщений: 1,703
13.02.2012, 20:03 14
Цитата Сообщение от Yakudza Посмотреть сообщение
Но сделал всё таки по своему )))
Молодец! Так держать
0
13.02.2012, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2012, 20:03

Заменить ссылки в одном txt-файле на ссылки из другого
Здравствуйте, подскажите пожалуйста как можно заменить ссылки в одном txt файле на ссылки в другом...

Ссылки с сайтов, расположенных на одном IP
В Гугле убедился на опыте: из несколько ссылок с разных сайтов, расположенных на одном IP, он...

Замена слов в одном текстовом файле словами, записанными в другом текстовом файле
Кто-нибудь пожалуйста приведете пример реализации следующей программы имеются два тектовых файла -...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru