C# Abbrechen-Button?

4 Antworten

Also irgendwie etwas wirr das ganze.

Ein kompletter Code-Ausschnitt würde mehr helfen.

Ist dein Dialogaufruf synchron und kan Werte zurückgeben?

Du kannst natürlich schmutzig sein und einfach sagen

if ( person != null )

{

_db.AddPerson(person);
        _db.SaveChanges();

}

Du musst halt vor dem Speichern prüfen, ob der Wert (nicht) null ist.

Hallo SuM2AdH,

das ist relativ schnell machbar. Für gewöhnlich übergibst du doch Werte? Diese kannst du in der ersten Form überprüfen.

Die 2. Form ganz normal via close(); schließen.

var dlg = new PersonDialog();
dlg.ShowDialog();
var person = dlg.Persons;
_db.AddPerson(person);
_db.SaveChanges();

Hier könntest du doch vor der Nutzung der Werte bei _db.AddPerson vorher mit einem If auf einen Bool überprüfen, den du bei "Abbrechen auf "true" setzt?

Also Form2

bool abgebrochen = false;
...
ButtonClick{
abgebrochen = true;
close();
}

Dann in Form1

if (dlg.abgebrochen == false){
_db.AddPerson(person);
 _db.SaveChanges();
}

Meinst du das so?

Mit freundlichen Grüßen

Dultus

12

Danke das hat funktioniert. :D

1

C# User Login: Passwort-Hash vergleichen?

Hallo,

ich programmiere eine Anwendung, in der man Adressen mit SQL-Server verwalten kann. Man kann Benutzer anlegen und sich mit denen beim Start der Anwendung einloggen.

Nun möchte ich das Passwort hashen. Beim Erstellen des Benutzers wird bereits ein Hashwert generiert und in der Passwort-Spalte in der Datenbank angezeigt. Beim Einloggen soll auch das Passwort gehasht werden und dann der Hash vom Einloggen mit dem aus der Datenbank auf Übereinstimmung verglichen werden.

Ich habe mich an folgendem Tutorial orientiert: https://dotnetcodr.com/2017/10/26/how-to-hash-passwords-with-a-salt-in-net-2/

Ich generiere also immer einen zufälligen Hashwert und das auch beim Einloggen. Wenn ich dann also den Hash vom Einloggen mit dem aus der Datenbank pvergleiche, können die nie übereinstimmen, weil eben bei beiden immer ein zufälliger Wert generiert wird.

Hash (beim Erstellen des Benutzers):

public HashWithSaltResult HashWithGenericSalt(string password, int saltLength, HashAlgorithm hashAlgo)
{
    RNG rng = new RNG();
    byte[] saltBytes = rng.GenerateRandomCryptographicBytes(saltLength);
    byte[] passwordAsBytes = Encoding.UTF8.GetBytes(password);
	List<byte> passwordWithSaltBytes = new List<byte>();

    passwordWithSaltBytes.AddRange(saltBytes);
    passwordWithSaltBytes.AddRange(passwordAsBytes);
    byte[] digestBytes = hashAlgo.ComputeHash(passwordWithSaltBytes.ToArray());

    return new HashWithSaltResult(Convert.ToBase64String(saltBytes), Convert.ToBase64String(digestBytes));
}

Hash (beim Einloggen):

public HashWithSaltResult HashWithSalt(string password, string salt, HashAlgorithm hashAlgo)
{
	// Wie hashe ich beim einloggen?
}

Einloggen:

using (var context = new PersonDbContext())
{
	var query = from p in context.Benutzers where textBoxVorname.Text == p.Vorname && textBoxName.Text == p.Name && HashResultSha512.Digest == p.PasswortDigest select p;
    HashPassword();
}

public void HashPassword()
{
    PasswordWithSaltHasher pwHasher = new PasswordWithSaltHasher();
    HashResultSha512 = pwHasher.HashWithSalt();

    db.CheckBenutzerLogin(textBoxVorname.Text, textBoxPasswort.Text, HashResultSha512.Salt, HashResultSha512.Digest);
}

Was muss ich in

public HashWithSaltResult HashWithSalt

schreiben, damit er den Hashwert aus der Datenbank verwendet und nicht wieder einen neuen Wert generiert?

...zur Frage

Visual Basic: Wie kann ein Programm erst einen 2. Form öffnen und dann sich selbst schließen?

Das eine Programm ruft bei einem Klick auf den Button die Form 2 mit dem Befehl

form2.show

auf.

Jetzt soll sich das erste Programm schließen. Aber wenn ich den Befehl

close()

verwende schließen sich beide Programme!

und wenn ich in Programm 1 die Befehlskette

 

form2.show

form1.close

 

verwende, kommt die Fehlermeldung dass das Programm 1 sich nicht selbst aufrufen(beenden) kann.

Wie löse ich das Problem?

 

...zur Frage

C# 6er Würfel zählen. Mit Haltepunkt geht es, ohne nicht?

Hallo, ich brauche für ein anderes Projekt die Funktion des Würfel zählen. Zum Beispiel 6 durchgänge: 2x6 und 4x4 Dann sollen die 2 6en in einer Variable gespeichert und ausgegeben werden.

Das komische daran ist, dass es mit meinem Programmcode funktioniert, wenn ich einen Haltepunkt setze. Wenn ich diesen wieder entferne dann zeigt er mir an, dass ich entweder 6 6en habe oder 0, dass kann ja kein Zufall sein.

Programmcode:

 public partial class Form1 : Form
    {

        
        int Zähler = 0;


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Zähler = 0;

            int i = 0;
            while (i < 4)
            {
                i++;
                Random Rnd = new Random();
                int RndNr3 = Rnd.Next(1, 7);

                if (RndNr3 == 6)
                {
                    Zähler = Zähler + 1;

                }
            }
            {

                MessageBox.Show(Zähler.ToString());


            }
        }
    }
}
...zur Frage

Eclipse Taschenrechner

Guten Tag ich versuche mit Eclipse Juno einen Taschenrechner zu erstellen bin aber mit meinem jetzigen Javawissen am Ende. Ich programmiere noch nicht lange Kann mir jmd. helfen???

Quellcode:

Start.java:

public class Start {

static Fenster f;

public static void main(String[] args) {

    f=new Fenster("Fensterprogramm",800,600);

}

}

Fenster.java:

import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener;

public class Fenster extends Frame implements WindowListener, ActionListener{

Button Ba,Bs,Bm,Bd,Erg;
TextField T1,T2,T3;
Label L0;

public Fenster(String titel, int breite, int hoehe) {

    this.setTitle(titel);
    this.setSize(breite,hoehe);
    this.setLayout(null);

    Ba = new Button("+");
    Ba.setLocation(150,30);
    Ba.setSize(20,20);
    this.add(Ba);

    Bs = new Button("-");
    Bs.setLocation(150,60);
    Bs.setSize(20,20);
    this.add(Bs);

    Bm = new Button("*");
    Bm.setLocation(150,90);
    Bm.setSize(20,20);
    this.add(Bm);

    Bd = new Button(":");
    Bd.setLocation(150,120);
    Bd.setSize(20,20);
    this.add(Bd);

    T1 = new TextField(20);
    T1.setLocation(50,75);
    T1.setSize(75,20);
    this.add(T1);

    T2 = new TextField(20);
    T2.setLocation(195,75);
    T2.setSize(75,20);
    this.add(T2);

    Erg = new Button("=");
    Erg.setLocation(295,75);
    Erg.setSize(20,20);
    this.add(Erg);




    this.addWindowListener(this);
    this.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e1) {
    if (e1.getSource() == Ba) {
        if (e1.getSource() == Erg) {
            System.out.println(Integer.parseInt(T1.getText()) + Integer.parseInt(T2.getText()));
        }
    }

}

@Override
public void windowActivated(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosed(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowClosing(WindowEvent arg0) {
    System.exit(0);

}

@Override
public void windowDeactivated(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowDeiconified(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowIconified(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void windowOpened(WindowEvent arg0) {
    // TODO Auto-generated method stub

}

}

...zur Frage

Java: JButton mit MouseListener. Wie Button ansprechen?

 Maps[i] ist hierbei ein Array aus mehreren Buttons.

Maps[0].addMouseListener(new MouseAdapter() {
  public void mouseEntered(MouseEvent evt)
  {
    Maps[0].setBackground(hovering);
  }
  public void mouseExited(MouseEvent evt) 
  {
    Maps[0].setBackground(mappanel.getBackground());
}});

Wie kann ich unter mouseEntered den genauen Button abfragen, über welchem der Mauszeiger hovert? Momentan muss ich immer genau einen Button nennen und möchte das nun flexibler gestalten.

...zur Frage

C# mit SQL Datenbank verbinden und Songnamen aus einer Listbox abspeichern

Moin leute,

ich bin derzeit dabei Programmieren zu lernen und bin noch ziemlich weit am anfang. Jedenfalls habe ich eine listbox, welche von einem radio sender die song namen von der webseite abgreift. Der titel wird in der listbox angezeigt und alle 60sekunden aktuallisiert ob ein neuer titel drinnen steht.

Jetzt will ich, dass die titel abgespeichert werden, sobald man auf einem button klickt.

private void button1_Click_1(object sender, EventArgs e)
        {
            
            

            if (listModerator.SelectedIndex == 0)
            {



                SqlConnection TBTracks = new SqlConnection();
                SqlCommand cmd = new SqlCommand();
                TBTracks.ConnectionString = @"Data Source=.\SQLEXPRESS";
                //TBTracks.ConnectionString = 
                //    ".\SQLEXPRESS"+
                //    "Data Source=MeinPC\SQLEXPRESS";
                cmd.Connection = TBTracks;

                con = new SqlConnection(@"Data Source=MeinPC\SQLEXPRESS;Initial Catalog=PVP;Integrated Security=True");
                con.Open();
                cmd = new SqlCommand("SELECT * FROM TB_TRACKS");
                cmd.Connection = con;
                da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                listModerator.Text = dt.Rows[0]["Arstist"].ToString();
                cmd.CommandText =
                    "insert into TB_TRACKS " +
                    "(title, artist)" +
                    listModerator.Text;
                MessageBox.Show(cmd.CommandText);
                con.Close();

Die Tabelle heißt TB_Tracks und hat 3 spalten:

Spaltenname:        Datentyp:                 NULL-Wert:
id                uniqueidentifier             nein
title               nvarchar(50)               ja
artist            nvarchar(50)                 ja

Das sind so einige sachen, welche ich alle versucht habe um überhaupt irgendwas zu machen (alles mögliche schon wieder gelöscht und davon sollte eigentlich die hälfte auskommentiert sein).

Ich beschäftige mich seit heute leider erst zum ersten mal überhaupt mit datenbanken, weshalb ich keine ahnung habe wie ich vor gehen soll. Ich nutze den Microsoft SQL Server b.z.w den SQL Server Managment Sudio.

Ich würde mich freuen, wenn mir jemand helfen kann und dabei ein wenig erklären könnte .

Danke schonmal im vorraus

...zur Frage

Was möchtest Du wissen?