Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как сделать синхронность в 3x ComboBox'ax Добавлено: 11.03.07 19:50  

Автор вопроса:  Uksus | ICQ: 407373902 
У меня есть три ComBox'a:по именам CB1,CB2 и CB3...
и надо чтоб при выделении любого элемента из CB1 Автоматом выделялись элементы с такими же индексами в CB2 и CB3
И вот тут еще один вопрос как сохранять все элементы которые были добавлены в ComboBox, тоесть чтоб после закрытия программа автоматически сохраняла весь список элементов и при запуске программы они снова стояли на своих местах
ПАМАГИТЕ ЧАЙНИКУ

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 11.03.07 20:47
1.
Private Sub Combo1_Click()
    Combo2.ListIndex = Combo1.ListIndex
    Combo3.ListIndex = Combo1.ListIndex
End Sub

2. Делай цикл по каждому комбо и сохраняй в БД или теустовый файл. При запуске проги - считывай.

Ответить

Номер ответа: 2
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #2
Добавлено: 11.03.07 22:29
вообще вся эта шняга должна быть заточена под работу с какими-нить биндингсурсами или чем-то вроде - не знаю что там в шестом васике. и если это действительно работа с БД, то лучше всё делать стандартными средствами - в дизайнере, почти не прибегая к коду. Тогда и данные во всех трёх комбо не будут дублироваться в памяти, а просто будут ссылаться на единый ресурс. Это правильнее. Уверен и в шестом васике есть возможность всё это сделать таким образом, что синхронизация выделенного будет производится автоматом.

Ответить

Номер ответа: 3
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #3 Добавлено: 12.03.07 08:00
2Arseny к тебе два вопроса
1й Как лучше это дело зациклить. и
2й нужен такой файл чтоб инфу с него можно было считать только из проги (просто вариантов уйма а нужен такой чтоб после сохранения в этот файл БД Хранила не тока Элементы но и их синхронность)
З.Ы. Я чайник (скажем так), по VB тока начинаю разбираться если можно поподробней, со сносками на Главные моменты (типа 'Это запись в БД, 'А это чтение из БД)... ЗАРАНЕЕ СПАСИБО

Ответить

Номер ответа: 4
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #4
Добавлено: 12.03.07 18:24
 а за чем циклить просто когда он виделяет какой нибудь елемент автоматом виделять і в других CB етот індекс
Пример:
Private Sub Combo1_Click()
Combo2.ListIndex = Combo1.ListIndex
Combo3.ListIndex = Combo1.ListIndex
End Sub
Private Sub Combo2_Click()
Combo1.ListIndex = Combo2.ListIndex
Combo3.ListIndex = Combo2.ListIndex
End Sub
Private Sub Combo3_Click()
Combo1.ListIndex = Combo3.ListIndex
Combo2.ListIndex = Combo3.ListIndex
End Sub

Private Sub Form_Load()
Combo1.AddItem "Õòî"
Combo2.AddItem "Ïèøå"
Combo3.AddItem "virusu"
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #5 Добавлено: 13.03.07 08:25
2Docal: с Комбиками в твоем коде всё ясно а вот зачем последние строки
Private Sub Form_Load()
Combo1.AddItem "Õòî"
Combo2.AddItem "Ïèøå"
Combo3.AddItem "virusu"
End Sub

Чет я не понял разъясни....

Ответить

Номер ответа: 6
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #6 Добавлено: 13.03.07 08:35
Да кстати прога выдает ошибку при добавлении строк
Combo2.ListIndex = Combo1.ListIndex
Combo3.ListIndex = Combo1.ListIndex

и еще такой прикол у вас такая строка кода
Private Sub Combo1_Click()

а у меня вот такая
 
Private Sub CB1_SelectedIndexChanged

Чет не пойму че с этим сделать то ...

Ответить

Номер ответа: 7
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #7 Добавлено: 13.03.07 09:11
КОРОЧЕ С СИНХРОНИЗАЦИЕЙ РАЗОБРАЛСЯ НАДО СДЕЛАТЬ ВОТ ТАК
Private Sub CB1_SelectedIndexChanged()
        CB2.SelectedIndex() = CB1.SelectedIndex()
        CB3.SelectedIndex() = CB1.SelectedIndex()

    End Sub

    Private Sub CB2_SelectedIndexChanged()
        CB1.SelectedIndex() = CB2.SelectedIndex()
        CB3.SelectedIndex() = CB2.SelectedIndex()
    End Sub

    Private Sub CB3_SelectedIndexChanged()
        CB1.SelectedIndex() = CB3.SelectedIndex()
        CB2.SelectedIndex() = CB3.SelectedIndex()
    End Sub

ТЕПЕРЬ НАДО ПОНЯТЬ КАК СОХРАНЯТЬ ЭЛЕМЕНТЫ СПИСКА В БД И ПРИ СЛЕДУЮЩЕМ ЗАПУСКЕ ВЫВОДИТЬ ИХ НА СВОИ МЕСТА В СПИСОК
... КАКИМ МАКАРОМ ЭТО СДЕЛАТЬ НАРОД ...

Ответить

Номер ответа: 8
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #8 Добавлено: 13.03.07 10:11
Private Sub CB1_SelectedIndexChanged

Ты на чем пишешь?

В БД 3 поля, БЕЗ всяких индексов.
В первое поле сохраняешь значения комбо1, во второе - комбо2 и т.д.

При загрузке программы встаешь на первую запись и поочередно вносишь (AddItem) в комбо.

Чего непонятно?

Ответить

Номер ответа: 9
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #9 Добавлено: 13.03.07 11:18
Пишу на VS.NET...
тут такое дело... не правильно поставил вопрос изначально(ай эм СОРРИ, бекоз ай эм чайник)
нужно: 1е - из 3х текстбоксов текст в 3 комбика ЗАСУНУТЬ(
  
Private Sub B1_Click()
        CB1.Items.Insert(0, TB1.Text)
        CB2.Items.Insert(0, TB2.Text)
        CB3.Items.Insert(0, TB3.Text)
        End Sub

это я сделал...
2е - Засинхронить все элементы (с одинак индексами) комбиков
Private Sub CB1_SelectedIndexChanged()
       CB2.SelectedIndex() = CB1.SelectedIndex()
       CB3.SelectedIndex() = CB1.SelectedIndex()

    End Sub

    Private Sub CB2_SelectedIndexChanged()
       CB1.SelectedIndex() = CB2.SelectedIndex()
       CB3.SelectedIndex() = CB2.SelectedIndex()
    End Sub

    Private Sub CB3_SelectedIndexChanged()
       CB1.SelectedIndex() = CB3.SelectedIndex()
       CB2.SelectedIndex() = CB3.SelectedIndex()
    End Sub

эт я тоже сделал...
Остается сделать вот что:
3е - все элементы комбиков СОХРАНИТЬ в БД(которую кстати я так и не сделал! НЕ ПОЙМУ КАК)
4е - при запуске программы из БД все элементы возвращаются в свои комбики и на свои места...(причем чтобы можно было добавлять новые элементы как в начале из текстбоксов и опять сохранять эти элементы в БД к уже имеющимся там предыдущим элементам)
ПАДСКАЖИ КАК ЭТО ДЕЛО НАРИСОВАТЬ

Ответить

Номер ответа: 10
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #10
Добавлено: 13.03.07 12:00
раз у тебя БД, тогда чего ты извращаешся ручками это синхронизируя?

кинь на форму три комбика и один BindingSource
Public Class Form1
    Dim tblData As New Data.DataTable() ' single source

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        tblData.Columns.Add("ID", GetType(Integer))
        tblData.Columns.Add("NAME", GetType(String))

        tblData.Rows.Add(1, "Иванов";)
        tblData.Rows.Add(2, "Петров";)
        tblData.Rows.Add(3, "Сидоров";)

        ComboBox1.DataSource = BindingSource1
        ComboBox2.DataSource = BindingSource1
        ComboBox3.DataSource = BindingSource1

        BindingSource1.DataSource = tblData

        ComboBox1.DisplayMember = "NAME"
        ComboBox1.ValueMember = "ID"

        ComboBox2.DisplayMember = "NAME"
        ComboBox2.ValueMember = "ID"

        ComboBox3.DisplayMember = "NAME"
        ComboBox3.ValueMember = "ID"
    End Sub
End Class


DataTable, который я здесь изготавливал и заполнял вручную, тебе даже создавать не придётся - возьмёшь его из своей базы данных (типизированного датасета ли вытащишь или ещё как - не знаю, дело твоё).
В чём соль:
- датасет - набор таблиц и связок между ними
- таблица - хранилище данных
- BindingSource привязывается к таблице и связывает её с теми элементами, которые ссылаются на BindingSource, при этом есть такое понятие, как текущая запись
- все остальные компоненты привязываясь к этому биндингу следуют его текущей записи

понакидай всякого добра на форму, повозись со свойствами объектов в полях Bindings и разными там DataMember, DataValue и через пару дней будешь без проблем лепить простенькие программки, почти не прибегая к коду.

Ответить

Номер ответа: 11
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #11 Добавлено: 13.03.07 12:21
Пишу на VS.NET...

Блин... Это должно было быть первой строчкой вопроса!

Ответить

Номер ответа: 12
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #12 Добавлено: 13.03.07 14:55
2Arseny Ну с кем не бывает я ж говорил что я в этом деле Чайнецкий...
Все когда то начинают учиться и хорошо что есть такие люди которые уже это знают и помогут...

Ответить

Номер ответа: 13
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #13 Добавлено: 13.03.07 15:01
2Neco БД у меня ящё нету! (не врубился я пока как яё сделать)

Ответить

Номер ответа: 14
Автор ответа:
 Uksus



ICQ: 407373902 

Вопросов: 10
Ответов: 23
 Профиль | | #14 Добавлено: 13.03.07 15:03
2Neco БД у меня ящё нету! (не врубился я пока как яё сделать)может есть какой нить шаблончик БД более подходящий для моего варианта

Ответить

Номер ответа: 15
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #15
Добавлено: 13.03.07 15:16
там всё в дизайнере
добавить датасурс (в менюхе сверху должно быть)
там выбираешь (чтоб по простому) сиквеловский датафайл, он тебе его сам создаст и там потом создашь таблички (тож в дизайнере), перетащишь их в свой датасет и можешь приступать к комбикам.
если надо подробнее, вечером попробую описать

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам