Как переместить коды из формы в класс?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Lugomor
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 25.03.2009 (Ср) 20:05

Как переместить коды из формы в класс?

Сообщение Lugomor » 25.03.2009 (Ср) 23:47

Здравствуйте!

Только начинаю программировать и вот проблема: есть проэкт, есть форма, элементы управления текстбоксы и т.д., есть класс CheckStrings, внём две функции. А задача такая: Нужно сделать так чтобы, вся работа выполнялась в классе CheckStrings, т.е. чтобы все коды были в этом классе!

Заранее Спасибо!
Тупозаяц

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как переместить коды из формы в класс?

Сообщение MIT » 26.03.2009 (Чт) 0:00

Какая работа, какие коды? Подробности в студию! :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Lugomor
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 25.03.2009 (Ср) 20:05

Re: Как переместить коды из формы в класс?

Сообщение Lugomor » 26.03.2009 (Чт) 0:21

Код: Выделить всё
Public Class Form1
    Private Ch As CheckStrings

Private Sub BtnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnShow.Click
        Dim attrRight As Integer
        Ch = New CheckStrings(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text)
        attrRight = Ch.CheckLength()
        Select Case attrRight
            Case Is = 1
                MessageBox.Show("Enter N S F A")
                TextBox1.ResetText()
                TextBox2.ResetText()
                TextBox3.ResetText()
                TextBox4.ResetText()
                Exit Sub
            Case Is = 2
                MessageBox.Show("Enter Only Letters")
                TextBox1.ResetText()
                TextBox2.ResetText()
                TextBox3.ResetText()
                TextBox4.ResetText()
                Exit Sub
        End Select
        RichTextBox1.Text = ""
        RichTextBox1.SelectedText = "                              Personal Information" + vbNewLine
        RichTextBox1.SelectedText = "" + vbNewLine
        RichTextBox1.SelectedText = "Name:     " + TextBox1.Text + vbNewLine
        RichTextBox1.SelectedText = "Surname:     " + TextBox2.Text + vbNewLine
        RichTextBox1.SelectedText = "Family:     " + TextBox3.Text + vbNewLine
        RichTextBox1.SelectedText = "Adress:     " + TextBox4.Text + vbNewLine
        RichTextBox1.SelectedText = "Birthday:     " + DateTimePicker1.Text + vbNewLine
        BtnSave.Enabled = True
        TextBox1.ResetText()
        TextBox2.ResetText()
        TextBox3.ResetText()
        TextBox4.ResetText()
    End Sub

Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
        SaveFileDialog1.Filter = "Текстовые файлы|*.txt|RTF-файлы|*.rtf"
        If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            RichTextBox1.SaveFile(SaveFileDialog1.FileName)
            CmbCards.Items.Add(SaveFileDialog1.FileName)
        End If
    End Sub

Private Sub BtnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLoad.Click
        If (CmbCards.Items.Count > 0) Then
            Dim curItem As Integer
            curitem = CmbCards.SelectedIndex
            If (curitem < 0) Then Exit Sub
            RichTextBox1.LoadFile(CmbCards.Items(curItem))
        End If
    End Sub
End Class

'А это класс
Public Class CheckStrings
    Private Family, name, surname, adress As String
    Public Sub New(ByVal fam As String, ByVal nm As String, ByVal sr As String, ByVal ad As String)
        Family = fam
        name = nm
        surname = sr
        adress = ad

    End Sub
    Public Function CheckLength() As Integer
        Dim res As Integer
        Dim X1, X2, X3, X4 As Boolean
        X1 = (Family.Length > 0)
        X2 = (name.Length > 0)
        X3 = (surname.Length > 0)
        X4 = (adress.Length > 0)
        res = (X1 And X2) Or (X2 And X3) Or (X3 And X4)
        If (Not res) Then Return 1
        res = CheckNumeric(Family) And CheckNumeric(name) And CheckNumeric(surname)
        If (Not res) Then Return 2 Else Return 0

    End Function
    Public Function CheckNumeric(ByVal Chstr As String) As Boolean
        Dim c As String
        Dim i As Integer
        For i = 0 To Chstr.Length - 1
            c = Chstr.Chars(i)
            If (IsNumeric(c)) Then
                CheckNumeric = False
                Exit Function
            End If
        Next
        CheckNumeric = True
    End Function
End Class
Последний раз редактировалось Lugomor 26.03.2009 (Чт) 11:07, всего редактировалось 1 раз.
Тупозаяц

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как переместить коды из формы в класс?

Сообщение MIT » 26.03.2009 (Чт) 0:35

Что я могу сказать... Код, который был сконвертирован из VB6, но не оптимально: в .NET`е надо использовать средства .NET`а, а не то, что оставлено для совместимости. Вроде работает, вроде верно.

Так что ты в нем хочешь изменить-то?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Lugomor
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 25.03.2009 (Ср) 20:05

Re: Как переместить коды из формы в класс?

Сообщение Lugomor » 26.03.2009 (Чт) 1:24

Самое смешное что я то, ничего менять не хочу :) . Препод же на энтот счет другого мнения :cry: . Это собственно задание: Нужно сделать так чтобы, вся работа выполнялась в классе CheckStrings, т.е. чтобы все коды были в этом классе! ( Все поняли? Ну тогда заработу!) Это слова препода :D
Тупозаяц

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Как переместить коды из формы в класс?

Сообщение 1Steps » 26.03.2009 (Чт) 3:55

Код: Выделить всё
Private Sub BtnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnShow.Click
Dim attrRight As Integer
Ch = New CheckStrings(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text)
attrRight = Ch.CheckLength()
Select Case attrRight
Case Is = 1
MessageBox.Show("Enter N S F A")
TextBox1.ResetText()
TextBox2.ResetText()
TextBox3.ResetText()
TextBox4.ResetText()
Exit Sub
Case Is = 2
MessageBox.Show("Enter Only Letters")
TextBox1.ResetText()
TextBox2.ResetText()
TextBox3.ResetText()
TextBox4.ResetText()
Exit Sub
End Select
RichTextBox1.Text = ""
RichTextBox1.SelectedText = " Personal Information" + vbNewLine
RichTextBox1.SelectedText = "" + vbNewLine
RichTextBox1.SelectedText = "Name: " + TextBox1.Text + vbNewLine
RichTextBox1.SelectedText = "Surname: " + TextBox2.Text + vbNewLine
RichTextBox1.SelectedText = "Family: " + TextBox3.Text + vbNewLine
RichTextBox1.SelectedText = "Adress: " + TextBox4.Text + vbNewLine
RichTextBox1.SelectedText = "Birthday: " + DateTimePicker1.Text + vbNewLine
BtnSave.Enabled = True
TextBox1.ResetText()
TextBox2.ResetText()
TextBox3.ResetText()
TextBox4.ResetText()
End Sub
Не совсем понятно, что должна показать эта кнопка? Или она должна устраивать проверку? Тогда, почему btnShow?
Да и вообще, ты бы лучше сказал, что конкретно должна делать твоя программа.
Удалена за ненадобностью.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как переместить коды из формы в класс?

Сообщение MIT » 26.03.2009 (Чт) 9:13

1Steps писал(а):Не совсем понятно, что должна показать эта кнопка?
Она делает "проверку" на правильноссть введенных данных, и если те подходят, то они пишутся в rtb

Мне вот что непонятно:
Код: Выделить всё
        RichTextBox1.Text = ""
        RichTextBox1.SelectedText = " Personal Information" + vbNewLine
        RichTextBox1.SelectedText = "" + vbNewLine
        RichTextBox1.SelectedText = "Name: " + TextBox1.Text + vbNewLine
        RichTextBox1.SelectedText = "Surname: " + TextBox2.Text + vbNewLine
        RichTextBox1.SelectedText = "Family: " + TextBox3.Text + vbNewLine
        RichTextBox1.SelectedText = "Adress: " + TextBox4.Text + vbNewLine
        RichTextBox1.SelectedText = "Birthday: " + DateTimePicker1.Text + vbNewLine
ИМХО, это страшный бред, т.к. в .NET есть такая штука, как String.Format...

Но так что тебе надо изменить-то?
В твоем классе расположены проверки: CheckNumeric(функцию отдельно можно вынести, да, но написана она не рационально), CheckLength - непонятно почему она не в классе формы, если там идет обращение, по большому счету, к TextBox`ам. Вообще не понятно зачем тут нужен отдельный класс, т.к. весь код очень хорошо будет смотреться в коде формы. Единственное, что можно было бы сделать для разбиения кода, так это вынести CheckNumeric в модуль, все же остальное должно быть в форме.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Lugomor
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 25.03.2009 (Ср) 20:05

Re: Как переместить коды из формы в класс?

Сообщение Lugomor » 26.03.2009 (Чт) 11:52

Проэкт называется "Visit Card", CheckNumeric и CheckLength в классе CheckStrings, это задумка препода. Можно вообще было обойтись без класса и все писать в классе Form1, но у препода свой метод обучения, т.е. мы на практике создали класс CheckStrings, в нём функции переменные и т.д.(потренировались так сказать). То есть если мы будем изучать еще какой нибудь метод, то в программе этот метод и появится. Я так думаю рациональных вариантов - море, но мы на примере этой проги изучаем все основные понятия.

MIT писал(а):В твоем классе расположены проверки: CheckNumeric(функцию отдельно можно вынести, да, но написана она не рационально)
- А как Будет рационально?
MIT писал(а):ИМХО, это страшный бред, т.к. в .NET есть такая штука, как String.Format
- Просветите пожалуйста по поводу String.Format как применить?

Вот надо найти вариант, когда весь код в классе CheckStrings, ну а в форме типа ссылки чтоли на этот класс, может есть вариант?
Тупозаяц

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Как переместить коды из формы в класс?

Сообщение Williams » 26.03.2009 (Чт) 12:38

Код: Выделить всё
String.Format("Привет, {0}, меня зовут {1}.", New Object() {"Пользователь", "Администратор"})
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как переместить коды из формы в класс?

Сообщение MIT » 26.03.2009 (Чт) 12:44

Williams писал(а):New Object() {"Пользователь", "Администратор"}
А это зачем?
Там есть более удобная перегрузка:
Код: Выделить всё
String.Format("text {0}param1: {1}{0}param2: {2}{0}param3: {3}", vbcrlf, value1, value2, value3)


Lugomor писал(а):- А как Будет рационально?
Например можно проверить вхождение нежелательных символов, пользуясь String.IndexOfAny
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 69

    TopList