Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Как переместить коды из формы в класс?


Автор: Lugomor 27.3.2009, 12:51
Здравствуйте! 

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

Заранее Спасибо!

Автор: Pilger 27.3.2009, 16:26
Функциям приписываешь Shared и затем эти функции можешь запускать через Клас.Функция

Автор: Lugomor 27.3.2009, 16:52
Код

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 
  
'А это класс 

Код vb.net 
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


Добавлено через 11 минут и 26 секунд
Вобщем надо переместиь все коды из класса Form1 в класс CheckStrings, но как тогда это будет работать, т.е. препод
сказал чтобы в форме что-то присутствовало, но вся работа происходила в CheckStrings, может ктото подробно опишет энтот механмзм?

Автор: -Mikle- 28.3.2009, 09:46
мне не ясна задача, что нужно твоему преподу...

Автор: Pilger 28.3.2009, 13:34
Ну ты должен для начала понять, как работают классы...

Вот тут ты создаешь новый объект класса CheckStrings, передаешь ему атрибуты и сохраняешь в Ch.

Код

Ch = New CheckStrings(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text) 


В классе похоже есть что то вроде

Код

Public Sub New (Text1 As String, Text2 As String, Text3 As String, Text4 As String)
  Me.Text1=Text1
  Me.Text2=Text2
  Me.Text3=Text3
  Me.Text4=Text4
End Sub


Теперь в объекте Ch лежат твои переменные.
Теперь после этого ты используешь функции этого класса для объекта Ch
Код

attrRight = Ch.CheckLength()

Которая работает с переменными в этом объекте.
Таким образом ты можешь в классы пихать любые объекты, переменные и методы (то, что ты делаешь на самой форме можно частично перенести туда). Методы из CheckString или др. ты можешь запускать из самой формы Form.

Автор: Lugomor 1.4.2009, 14:40
Большое спасибо Pilger! Всё грамотно и понятно!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)