Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
#1

.NET 3.x Использование самописной DLL в программе - Visual Basic .NET

17.09.2015, 10:21. Просмотров 367. Ответов 12
Метки нет (Все метки)

Добрый день все, подскажите пожалуйста хочу сделать примерно так, но не получается.

Форма:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1
    Public ZIP_Name As String
    Public ZIP_Nom As String
 
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
        ZIP_Name = ComboBox1.Text
            ZIP_zapolnenie()
        TextBox1.Text = ZIP_Nom
        ZIP_Name = ""
        ZIP_Nom = ""
    End Sub
End Class
DLL
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Spisok
    Public Function zapolnenie()
        If ZIP_Name = "Элемент питания" Then
            ZIP_Nom = "015"
        ElseIf ZIP_Name = "Мышь" Then
            ZIP_Nom = "62"
        ElseIf ZIP_Name = "Клавиатура " Then
            ZIP_Nom = "295"
              ElseIf ZIP_Name = "Марка" Then
            ZIP_Nom = "100"
        ElseIf ZIP_Name = " DH 400-G" Then
            ZIP_Nom = "47"
        End If
    End Function
Подскажите как правильно сделать, тоесть на форме при выборе текста из combox, автоматом должна заполняться TextBox1.

Помогите.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2015, 10:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .NET 3.x Использование самописной DLL в программе (Visual Basic .NET):

Использовать класс из самописной dll в приложении - Visual Basic .NET
Привет! Ребят, помогите разобраться в чем загвоздка. Создал простенькую dll и хотел ее попробовать использовать, не получилось. ...

Использование String Tables в .dll(.dll.mui) (Для VB .NET) - Visual Basic .NET
Здравствуйте. Нужно извлечь(а потом запоковать) таблицу строк(string tables ). Допустим есть файл explorerframe.dll.mui из...

Использование своей DLL - Visual Basic .NET
VB.NET Создал свою dll. В проекте (конс. приложение) добавляю референс на нее - все нормально, все работает. Потом, после построения...

.NET 3.x Использование Dll из конкретной папки - Visual Basic .NET
Скажите как привязаться к dll из определенной папки, чтоб не копировать ее в папку с .exe. пример дерева папок: c:\Upgrade\прога.exe...

Использование функций DLL в своем приложении - Visual Basic .NET
Создал свою DLL, с классом "Общее" и функцией в нём "Объявление_1". Хочу использовать её в своей программе: Imports PXoType.Общее ...

.NET 3.x Использование текстовой информаций в dll и копирование ее на форму - Visual Basic .NET
Доброе время суток, Кто знает подскажите вот такой вот вопросик. Есть на форме ComboBox необходимо его заполнить строчками из...

12
OwenGlendower
Модератор
Эксперт .NET
7411 / 6387 / 2377
Регистрация: 17.03.2014
Сообщений: 12,382
Записей в блоге: 1
17.09.2015, 10:47 #2
Andrei_Korostel, пусть функция zapolnenie возвращает значение. Именно для этого функции и нужны, в отличие от Sub-ов.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1
    Public ZIP_Name As String
    Public ZIP_Nom As String
 
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
        ZIP_Name = ComboBox1.Text
        ZIP_Nom = ZIP_zapolnenie(Zip_Name)
        TextBox1.Text = ZIP_Nom
        ZIP_Name = ""
        ZIP_Nom = ""
    End Sub
End Class
DLL:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Spisok
    Public Function zapolnenie(ByVal Zip_Name As String) As String
        If ZIP_Name = "Элемент питания" Then
            Return "015"
        ElseIf ZIP_Name = "Мышь" Then
            Return  "62"
        ElseIf ZIP_Name = "Клавиатура " Then
            Return  "295"
        ElseIf ZIP_Name = "Марка" Then
            Return  "100"
        ElseIf ZIP_Name = " DH 400-G" Then
            Return  "47"
        End If
        Return ""
    End Function
0
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
17.09.2015, 10:58  [ТС] #3
OwenGlendower, Ошибка что то не то делаю..
"Дополнительные сведения: Ограничение PInvoke: варианты возвращаться не могут."
0
OwenGlendower
Модератор
Эксперт .NET
7411 / 6387 / 2377
Регистрация: 17.03.2014
Сообщений: 12,382
Записей в блоге: 1
17.09.2015, 11:03 #4
Andrei_Korostel, ты случайно не пытаешься подключить функцию zapolnenie с помощью DllImport?
0
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
17.09.2015, 11:10  [ТС] #5
OwenGlendower, Извините, тормоз, можно подробнее )))
0
Замабувараев
254 / 261 / 84
Регистрация: 18.12.2014
Сообщений: 544
17.09.2015, 11:32 #6
Не надо так делать. Код превращается в нечитаемое месиво:
vb.net
1
2
3
4
5
6
7
8
9
10
11
        If ZIP_Name = "Элемент питания" Then
            ZIP_Nom = "015"
        ElseIf ZIP_Name = "Мышь" Then
            ZIP_Nom = "62"
        ElseIf ZIP_Name = "Клавиатура " Then
            ZIP_Nom = "295"
              ElseIf ZIP_Name = "Марка" Then
            ZIP_Nom = "100"
        ElseIf ZIP_Name = " DH 400-G" Then
            ZIP_Nom = "47"
        End If
Для таких вещей был специально создан оператор Select Case.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Select Case ZIP_Name
    Case "Элемент питания"
        ZIP_Nom = "015"
    Case "Мышь"
        ZIP_Nom = "62"
    Case "Клавиатура "
        ZIP_Nom = "295"
    Case "Марка"
        ZIP_Nom = "100"
    Case " DH 400-G"
        ZIP_Nom = "47"
End Select
А также
vb.net
1
ZIP_zapolnenie zapolnenie Spisok
Otvratitelno. Luchshe srazu perevodit' na angliyskiy ili pisat' po‐russki.
1
lamorez
22 / 20 / 6
Регистрация: 16.09.2015
Сообщений: 44
17.09.2015, 11:53 #7
Цитата Сообщение от Замабувараев Посмотреть сообщение
Otvratitelno
Использование для подобных вещей IF или даже SELECT CASE вместо того, чтобы использовать базу данных или т.п. -- вот что отвратительно.
0
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
17.09.2015, 12:22  [ТС] #8
Много соообщений но нет ответа
0
OwenGlendower
Модератор
Эксперт .NET
7411 / 6387 / 2377
Регистрация: 17.03.2014
Сообщений: 12,382
Записей в блоге: 1
17.09.2015, 12:35 #9
Andrei_Korostel, расскажи как ты подключаешь DLL где содержится функция zapolnenie.
0
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
17.09.2015, 12:49  [ТС] #10
OwenGlendower,
Форма
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1
    Public ZIP_Name As String
    Public ZIP_Nom As String
 
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
        ZIP_Name = ComboBox1.Text
        ZIP_Nom = zapolnenie(ZIP_Name)
        TextBox1.Text = ZIP_Nom
        ZIP_Name = ""
        ZIP_Nom = ""
    End Sub
End Class
Dll
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class Spisok
    Public Function zapolnenie(ByVal Zip_Name As String) As String
        If Zip_Name = "Элемент питания" Then
            Return "015.0000.000083"
        ElseIf Zip_Name = "Мышь" Then
            Return "015.0000.000062"
        ElseIf Zip_Name = "Клавиатура" Then
            Return "015.0000.000295"
                         ElseIf Zip_Name = "Марка-пломба ККТ" Then
            Return "010.0000.00100"
        ElseIf Zip_Name = "DH 400-G" Then
            Return "007.0002.000047"
        End If
        Return ""
    End Function
End Class
Строка ошибки на форме " ZIP_Nom = zapolnenie(ZIP_Name)"
Ошибка BC30451 "zapolnenie" не объявлена. Возможно, она недоступна из-за своего уровня защиты.
Как подключаю (ссылки-> добавить службу)
0
OwenGlendower
Модератор
Эксперт .NET
7411 / 6387 / 2377
Регистрация: 17.03.2014
Сообщений: 12,382
Записей в блоге: 1
17.09.2015, 13:01 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Andrei_Korostel Посмотреть сообщение
Строка ошибки на форме " ZIP_Nom = zapolnenie(ZIP_Name)"
Ошибка BC30451 "zapolnenie" не объявлена. Возможно, она недоступна из-за своего уровня защиты.
Неточный совет тебе дал. В таком виде метод zapolnenie нужно использовать так:
vb.net
1
2
3
4
5
6
7
8
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
    ZIP_Name = ComboBox1.Text
    Dim smth As New Spisok
    ZIP_Nom = smth.zapolnenie(ZIP_Name)
    TextBox1.Text = ZIP_Nom
    ZIP_Name = ""
    ZIP_Nom = ""
End Sub
Так конечно неудобно делать. Для вызова zapolnenie без создания экземпляра класса Spisok переделай его в модуль или объяви метод zapolnenie как Shared. Второй вариант будет выглядеть так:
Класс Spisok
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class Spisok
    Public Shared Function zapolnenie(ByVal Zip_Name As String) As String
        If Zip_Name = "Элемент питания" Then
            Return "015.0000.000083"
        ElseIf Zip_Name = "Мышь" Then
            Return "015.0000.000062"
        ElseIf Zip_Name = "Клавиатура" Then
            Return "015.0000.000295"
                         ElseIf Zip_Name = "Марка-пломба ККТ" Then
            Return "010.0000.00100"
        ElseIf Zip_Name = "DH 400-G" Then
            Return "007.0002.000047"
        End If
        Return ""
    End Function
End Class

ComboBox1_SelectedIndexChanged
vb.net
1
2
3
4
5
6
7
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
    ZIP_Name = ComboBox1.Text
    ZIP_Nom = Spisok.zapolnenie(ZIP_Name)
    TextBox1.Text = ZIP_Nom
    ZIP_Name = ""
    ZIP_Nom = ""
End Sub


Цитата Сообщение от Andrei_Korostel Посмотреть сообщение
Как подключаю (ссылки-> добавить службу)
Стоп. Твоя библиотека это веб-служба? Можешь выложить весь проект?
1
Andrei_Korostel
10 / 9 / 2
Регистрация: 02.05.2014
Сообщений: 118
18.09.2015, 06:17  [ТС] #12
OwenGlendower, завтра сейчас уже дома.

Добавлено через 16 часов 50 минут
OwenGlendower, Большое тебе спасибо!!!! Разобрался.
0
Yury Komar
Модератор
2214 / 2019 / 321
Регистрация: 27.01.2014
Сообщений: 3,583
Завершенные тесты: 1
19.09.2015, 18:19 #13
Andrei_Korostel, в библиотеках функции объявляются как Shared...
0
19.09.2015, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2015, 18:19
Привет! Вот еще темы с ответами:

Как пользоваться функциями самописной библиотеки - Visual Basic .NET
я создал библиотеку классов, но как вызвать и использовать не знаю, помогите

Вызов функции из dll. Dll не определена в коде и подключается программно - Visual Basic .NET
Я написал простую функцию которая возвращает негатив bitmap'а Function Negative(ByVal Bmp As Bitmap) Dim Bmp2 As New...

Дизассемблирование DLL, правка кода и компиляция его в DLL - .NET
ни разу не писал на c#, не пользовался monodeveloperом. сделано следующее: 1. дизассемблировал библиотеку name.dll, использовал...

Unable to load DLL (oci.dll). Help! - .NET
Всем привет! в чем может быть ошибка?... также ругается на вот эту строчку - oracleDataAdapter1.Fill(dataSet11); Server Error in...


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

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

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