Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht
Hallo alle zusammen.

ich schreibe eine Art Zeitefassungstool.mit Start, Ende und Dauer Button.

die Egebnisse solllen in die Tabellen von DataGridView eingetragen werden

soweit funktioniert und der Code berechnet alles so wie sein soll und die Ergebnisse werden auch eingetragen aber nicht jewels in eine Zeile.

was muss ich noch an Code ändern ?

Danke für eure Antworten 
  
  using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Zeiterfassungstool
{
    public partial class Form1 : Form
    {

        //Globale Variabeln
        
        public DateTime startTime;
        public DateTime endTime;
        //public table.Rows.[0];
         

        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
//--------------------------------------START------------------------------------------------


        private void btnStart_Click(object sender, EventArgs e)
        {
            this.startTime = DateTime.Now;
            textBox1.Text = startTime.ToString();
            textBox2.Text = startTime.ToString();
            int n = dataGridView1.Rows.Add();
            dataGridView1.Rows[n].Cells[0].Value = textBox1.Text;

            //table.Rows.Add(newRow);
            //table.Rows[0]["Bemerkung"] = "";
        }
            
//--------------------------------------ENDE------------------------------------------------
            

        private void btnEnde_Click(object sender, EventArgs e)
        {
            




            this.endTime = DateTime.Now;
            textBox3.Text = endTime.ToString();
            int n = dataGridView1.Rows.Add();
            dataGridView1.Rows[n].Cells[1].Value = textBox3.Text;


            TimeSpan dauer;
            dauer = endTime.Subtract(startTime);
            int m = dataGridView1.Rows.Add();
            dataGridView1.Rows[m].Cells[2].Value = dauer.TotalHours.ToString("0.00");


  

 

 

23.10.20 ZET.PNG

Bin zwar kein Experte aber du rufst jedes mal 

  int n = dataGridView1.Rows.Add(); 

auf. 
Dadurch wird dann im GridView immer eine neue Zeile geholt. 
Diesen Call musst du nur einmal machen und dann diesen Zeilenwert zwischen speichern ;)

  • Autor

wie wärst dann so als beispiel:

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row); ?

Ich kenn mich mit dem .NET leider auch nicht aus. Aber so wie ich die Sache einschätze, sind die 

yourDataGridView.Rows.Add

in der btnEnde_Click Methode komplett überflüssig, da die Row ja schon existiert.

Oder habe ich da was falsch verstanden?

  • Autor

stimmt! eigentlich muss nur bei btnEnde_Click nur die Ngaben zum gleiche Existierende Zeile angegeben ,eingefügt werden.. weiss aber nicht wie genau soll das dann geschrieben werden

Bearbeitet von MMazi

Die Zeile hast du ja sobald du auf Start drückst, und die speicherst du ja auch. Dann musst du die Variable nur noch übergeben. 

Alternative: Da die Row die du brauchst ja immer die letzte im GridView ist (sieht zumindest da nach aus), gibt es bestimmt auch eine Methode diese zu erfragen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.