Skocz do zawartości

Visual Basic - Prośba o pomoc


nwds12

Rekomendowane odpowiedzi

Siemka, Potrzebuję małej pomocy z VB. Chodzi o to że chce zrobić tak, aby po zamknięciu apki dane wpisane w formularzu nie kasowały się. Czyli że otwieram apkę ponowie a dane mają być uzupełnione. Teraz jest tak że wypełniam formularz, zapisuję go ale jak zamknę i otworzę ponownie to dane są wyczyszczone. Poniżej zamieszczam kod całej apki. Myślałem że usunięcie Private Sub ClearConfig () pomoże ale jednak nie ;) Gdyby ktoś wiedział jak to ogarnąć to proszę o pomoc tutaj w temacie albo na priv, chętnie zapłacę za pomoc w tej kwestii ;)

Public Class Form1
    Private Sub ClearConfig()
        If Not My.Computer.FileSystem.DirectoryExists("config") Then
            My.Computer.FileSystem.CreateDirectory("config")
        End If

        System.IO.File.WriteAllText("config\\pole1.txt", "")
        System.IO.File.WriteAllText("config\\content.txt", "")
        System.IO.File.WriteAllText("config\\lista.txt", "")
        System.IO.File.WriteAllText("config\\checkbox.txt", "")
        System.IO.File.WriteAllText("config\\captcha.txt", "")
        System.IO.File.WriteAllText("config\\karta2.txt", "")
        System.IO.File.WriteAllText("config\\karta3.txt", "")

        FlatTextBox1.Text = ""
        FlatTextBox2.Text = ""
        FlatTextBox3.Text = ""
        FlatTextBox4.Text = ""
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        FlatCheckBox1.Checked = False
        FlatCheckBox2.Checked = False
        FlatCheckBox3.Checked = False
        FlatCheckBox4.Checked = False
        FlatComboBox1.SelectedItem = -1

    End Sub

    Private Sub SaveConfig()
        If Not My.Computer.FileSystem.DirectoryExists("config") Then
            My.Computer.FileSystem.CreateDirectory("config")
        End If

        Dim Pole1 As String = ""
        If RadioButton1.Checked Then
            Pole1 = "Opcja 1"
        End If
        If RadioButton2.Checked Then
            Pole1 = "Opcja 2"
        End If
        If RadioButton3.Checked Then
            Pole1 = "Opcja 3"
        End If
        System.IO.File.WriteAllText("config\\pole1.txt", Pole1)

        System.IO.File.WriteAllText("config\\content.txt", FlatTextBox1.Text)
        System.IO.File.WriteAllText("config\\lista.txt", FlatComboBox1.SelectedItem.ToString())

        Dim objWriter As New System.IO.StreamWriter("config\\checkbox.txt")
        If FlatCheckBox1.Checked Then
            objWriter.WriteLine("1")
        End If
        If FlatCheckBox2.Checked Then
            objWriter.WriteLine("2")
        End If
        If FlatCheckBox3.Checked Then
            objWriter.WriteLine("3")
        End If
        If FlatCheckBox4.Checked Then
            objWriter.WriteLine("4")
        End If
        objWriter.Close()

        System.IO.File.WriteAllText("config\\captcha.txt", FlatTextBox2.Text)
        System.IO.File.WriteAllText("config\\karta2.txt", FlatTextBox3.Text)
        System.IO.File.WriteAllText("config\\karta3.txt", FlatTextBox4.Text)

    End Sub

    Private Function ValidateFields() As Boolean
        Dim IsValidated As Boolean = True

        IsValidated = (RadioButton1.Checked Or RadioButton2.Checked Or RadioButton3.Checked)
        IsValidated = (FlatTextBox1.Text.Length > 0)
        IsValidated = (FlatTextBox2.Text.Length > 0)
        IsValidated = (FlatTextBox3.Text.Length > 0)
        IsValidated = (FlatCheckBox1.Checked Or FlatCheckBox2.Checked Or FlatCheckBox3.Checked Or FlatCheckBox4.Checked)
        IsValidated = (FlatComboBox1.SelectedIndex > -1)

        Return IsValidated
    End Function

    Private Sub FlatButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatButton1.Click
        If (ValidateFields()) Then
            SaveConfig()
            MsgBox("Zapisano!")
        Else
            MsgBox("Nie wypełniłeś wszystkich pól formularza!", MsgBoxStyle.Critical)
        End If

    End Sub

    Private Sub FlatButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatButton2.Click
        ClearConfig()
        MsgBox("Wyczyszczono!")
    End Sub

    Private Sub FlatClose1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatClose1.Click

    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Dim Res As Windows.Forms.DialogResult = MsgBox("Czy chcesz zapisać zmiany przed wyjściem?", MsgBoxStyle.YesNoCancel, "Potwierdzenie")

        If Res = DialogResult.Yes Then
            SaveConfig()
        ElseIf Res = DialogResult.Cancel Then
            e.Cancel = True
        End If
    End Sub

    Private Sub FormSkin1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FormSkin1.Click

    End Sub
End Class
Odnośnik do komentarza

Dołącz do nas za darmo i naucz się zarabiać!

  • Dostęp do darmowych poradników pokazujących krok po kroku jak zarabiać w Internecie
  • Sposoby zarabiania niepublikowane nigdzie indziej
  • Aktywna społeczność, która pomoże Ci rozwiązać problemy i doradzi
  • Profesjonalne treści na temat SEO, social media, afiliacji, kryptowalut, sztucznej inteligencji i wiele więcej!

 

 

Moja rada: przerzuć się na c#.

e2704d7e46.gif

using System;
using System.IO;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace Unnamed12 {
    public partial class Form1 : Form {
        Settings settings = new Settings();
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            if (File.Exists("config.xml")) {
                loadConfig();
                setConfigValues();
            }
        }

        private void loadConfig() {
            XmlSerializer ser = new XmlSerializer(typeof(Settings));
            using (FileStream fs = File.OpenRead("config.xml")) {
                settings = (Settings)ser.Deserialize(fs);
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
            writeConfig();
        }

        private void writeConfig() {
            using (StreamWriter sw = new StreamWriter("config.xml")) {
                settings.NameTextBoxText = nameTextBox.Text;
                settings.SurrnameTextBoxText = surrnameTextBox.Text;
                settings.AgeNumericValue = (int)ageNumeric.Value;
                XmlSerializer ser = new XmlSerializer(typeof(Settings));
                ser.Serialize(sw, settings);
            }
        }

        private void setConfigValues() {
            nameTextBox.Text = settings.NameTextBoxText;
            surrnameTextBox.Text = settings.SurrnameTextBoxText;
            ageNumeric.Value = settings.AgeNumericValue;
        }
    }

    public class Settings {
        public string NameTextBoxText { get; set; }
        public string SurrnameTextBoxText { get; set; }
        public int AgeNumericValue { get; set; }
    }
}

Stworzyłem tu klasę Settings w której przechowuję dane pól formularza. Przy zamykaniu programu zapisuję dane z kontrolek do publicznych właściwości mojej klasy. Przy otwieraniu programu najpierw wczytuję dane z pliku do mojego obiektu settings, a następnie aktualizuję właściwości kontrolek. Do zapisywania danych do pliku użyłem serializacji XML. Jest to dość powszechne i co najważniejsze proste rozwiązanie. Tak wygląda zawartość pliku po zapisaniu:

669a045619.png

  • Super 1
Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .