Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Edzio
Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

ja gut in der Funktion les ich nur, aber in einem anderen Teil des programms schreibe ich auch oder ändere die formatierung.

mh ok
dann versuch ich das mal irgendwie zu handhaben,
von dem DataTable und DataSet hab ich auch noch nie was gehört
(ja bin noch blutiger Anfänger )

danke dir aber schon mal ...

Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

:)
kenn ich irgendwoher (bin auch lesefaul)


ok des mit dem OLEDB kenn ich gar nicht, jetzt will ich erst versuchen das auf die herkömmliche art zu machen
hier der Code in Kurzform :)

-excel öffnen
-excel zeile für zeile in Variable einlesen
-Variable Zeile für Zeile ins dGvexcel mit .Rows.Add

und wie kann ich jetzt diese Daten zuordnen?

binding_excel.DataSource = ????;

oder brauch ich das nicht mehr, da ja eigtentlich mein DGV gefüllt ist?

Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

heißt des, dass ich meine separate Funktion

dgv_fuelle()
wegfallen lassen kann?
(ausschnitt aus der Funktion)

public void dgv_fuellen()
        {

            dgverledigt = 0;
            dgvzeile = 6;
            do
            {
                Microsoft.Office.Interop.Excel.Application dgvxlapp = new Microsoft.Office.Interop.Excel.Application();
                dgvxlapp.Visible = false;
                Workbook dgvwb;
                object missing = System.Reflection.Missing.Value;

                try
                {

                    System.Threading.Thread.Sleep(300); //Kurze Wartetimer

                    dgvwb = dgvxlapp.Workbooks.Open(
                                                verbindung_zu_definitionen.getPfad(),
                                                ExcelKonstanten.UpdateLinks.DontUpdate,
                                                ExcelKonstanten.ReadWrite,
                                                ExcelKonstanten.Format.Nothing,
                                                "", // Passwort
                                                "", // WriteResPasswort
                                                ExcelKonstanten.IgnoreReadOnlyRecommended,
                                                Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
                                                "", // Trennzeichen
                                                ExcelKonstanten.Editable,
                                                ExcelKonstanten.Notify,
                                                ExcelKonstanten.Converter.Default,
                                                ExcelKonstanten.DontAddToMru,
                                                ExcelKonstanten.Local,
                                                ExcelKonstanten.CorruptLoad.NormalLoad
                                              );

                    // Arbeitsblätter lesen
                    Sheets sheets = dgvwb.Worksheets;
                    // ein Arbeitsblatt auswählen…
                    Worksheet dgvws = (Worksheet)sheets.get_Item("CM");
                    //erste leere Zeile suchen
                    do
                    {
                        object dgvwertzelle = dgvxlapp.Cells[dgvzeile, spalte_excel_erledigt].Value2;                      //erldigt feld
                        string wert_projektnummer = dgvxlapp.Cells[dgvzeile, spalte_excel_Projektnummer].Value.ToString();       //Typumwandlung, da sonst Fehler beim sortieren 
                        object wert_auftrag = dgvxlapp.Cells[dgvzeile, spalte_excel_Auftrag].Value2;
                        object wert_prio = dgvxlapp.Cells[dgvzeile, spalte_excel_Prio].Value2;
                        object wert_team = dgvxlapp.Cells[dgvzeile, spalte_excel_Team].Value2;
                        object wert_zusatz = dgvxlapp.Cells[dgvzeile, spalte_excel_Zusatz].Value2;
                        object wert_teilenummer = dgvxlapp.Cells[dgvzeile, spalte_excel_TnAnlage].Value2;
                        object wert_eingelastet = dgvxlapp.Cells[dgvzeile, spalte_excel_Eingelastet].Value2;                   //Fehler mit Datum
                        object wert_zieltermin = dgvxlapp.Cells[dgvzeile, spalte_excel_Zieltermin].Value2;
                        object wert_konstrukteur = dgvxlapp.Cells[dgvzeile, spalte_excel_Konstrukteur].Value2;
                        object wert_projektleiter = dgvxlapp.Cells[dgvzeile, spalte_excel_Projektleiter].Value2;

                        //wert_zieltermin = wert_zieltermin.ToString();//typeof(DateTime);
                        wert_eingelastet = Convert.ToDateTime(wert_eingelastet);
                        wert_zieltermin = Convert.ToDateTime(wert_zieltermin);

                        if (dgvwertzelle != null)
                        {
                            dgverledigt = dgverledigt + 1;
                        }
                        else
                        {
                            dGvexcel.Rows.Add(wert_projektnummer,wert_auftrag, wert_prio, wert_team,wert_zusatz,wert_teilenummer, wert_eingelastet,wert_zieltermin, wert_konstrukteur, wert_projektleiter);
                        }
                        lbl_zeile.Text = Convert.ToString(dgvzeile - dgverledigt - 5);
                        dgvzeile = dgvzeile + 1;
                        binding_excel.DataSource = dgvws;

                    } while (dgvws.Cells[dgvzeile, 1].Value != null);

                    
                    dgvwb.Close(true, missing, false);       //Workbook schließen & speichern
                    dgvxlapp.Quit();                         //Excel beenden
                    System.Threading.Thread.Sleep(300);   //Kurze Wartetimer

                    dgvexcelfehler = 0;

                }


In meiner Form_load habe ich nun ein

 binding_excel = new BindingSource();

in dem Excelaufruf habe ich das binding drin,
aber irgendwie kommt mir das falsch vor.... :(

Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

ja da war ich schon drauf,
und ich blick gerade hauptsächlich die Funktion

// Add this code to the form Load event handler.
  dataGridView1.DataSource = customersBindingSource;

umgeschrieben hab ich des dann so:

dGvexcel.DataSource = customersBindingSource;

aber wo hole ich mein bindingsource etc.?

da häng ich gerade bzw. blicke es nicht... :(

Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

in dem Bild sieht man die Fehlermeldung
und wie die Dropdownpfeile angezeigt werden (so wie ich mir das vorstelle)

Thema: Setzen eines DataGridViewAutoFilter zeigt zwar die Pfeile, aber ein Klick darauf führt zu Exception
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich habe eine Windowsform [Arbeitsmaske]
in dieser Form habe ich ein DataGridView [dGvexcel]

in meiner Funktion

Form1_Load
rufe ich meine Funktion

dGvexcel_initialisieren();
auf
in dieser setze ich Parameter wie:

 dGvexcel.ColumnCount = 10;
            dGvexcel.ColumnHeadersVisible = true;

            // Set the column header style.
            DataGridViewCellStyle columnHeaderStyle = new DataGridViewCellStyle();

            columnHeaderStyle.BackColor = Color.Beige;
            columnHeaderStyle.Font = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
            dGvexcel.ColumnHeadersDefaultCellStyle = columnHeaderStyle;
            
            // Spalten hinzufügen
            dGvexcel.Columns[0].Name = "Projektnummer";
            dGvexcel.Columns[1].Name = "Auftrag";
            dGvexcel.Columns[2].Name = "Priorität";
            dGvexcel.Columns[3].Name = "Team";
            dGvexcel.Columns[4].Name = "Zusatz";

anschließend rufe ich meine Funktion

dgv_fuellen();
auf
in dieser füttere ich das DGV mit Daten aus einer Excelliste. (das funktioniert auch perfekt)

Nun habe ich das DataGridViewAutoFilter entdeckt und mir hierzu auch die MS Seite angeschaut,
allerdings blicke ich es gerade nicht, wo ich was einsetzen soll.

Wenn ich diese Funktion

foreach (DataGridViewColumn col in dGvexcel.Columns)
            {
               col.HeaderCell = new DataGridViewAutoFilterColumnHeaderCell(col.HeaderCell);
            }
in meine

dGvexel_initialisieren();
setze
sehe ich zwar die dropdown Pfeile in jeder Spalte, aber sobald ich draufklicke kommt ein Fehler mit den Funktionen DataSource und DataBinding,
bei denen ich nicht blicke, wo ich die reinsetzen muss...

Vielleicht kann mir einer weiterhelfen.

Danke im Voraus.
Gruß

Thema: sap transaktion aufrufen
Am im Forum: Rund um die Programmierung

ok ich hab eine Lösung gefunden, ohne die API´s
(habe da im moment nicht die Zeit mich in diese einzuarbeiten...)

meine "Arguments" Zeile habe ich mit einem ";" zwischen gesamtprojektnummer und werkfeld bereichert und nun geht es:

compiler.StartInfo.Arguments = "/INI_FILE=\\\\xyz.de\\server\\int\\Application\\SAP\\de_SAP_PROD_SNC.INI /system=P02 /language=DE /client=001 /user=" + verbindung_zu_definitionen.getUsername() + " /command=" + transaktion + " " + sapfeld + "=" + gesamtprojektnummer +";" + werkfeld + "=" + werkzahl;

Falls jemand von euch mir eine gute Seite empfehlen kann, wo SAP .net oder die anderen Connectors
einfach erklärt werden, wäre ich euch dankbar :)

Gruß

Thema: sap transaktion aufrufen
Am im Forum: Rund um die Programmierung

Mh ok, die beiden Sachen kenn ich nicht :(

und mit diesem Shell bekommt man das nicht hin?

Thema: sap transaktion aufrufen
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich will über einen Button eine SAP Transaktion aufrufen, und in deren Maske zwei Variabel eingeben.
Im Sap selbst habe ich mir die DynproFeldnamen geholt.
Das ganze versuche ich nach Tip eines Kollegen über die UseSchellEigenschaft.

Es funktioniert auch soweit, dass die Transaktion aufgerufen wird,
und eine Variable in dem gewünschten Feld landet.
Die Zweite Variable bekomme ich aber nicht rein :(
Weiß einer hier Rat?

Hier der Code um die Transaktion aufzurufen:

           //SAP Laden
        public void sap_laden(string transaktion, string sapfeld, string gesamtprojektnummer)
        {
            string sap32bit_pfad = @"C:\Program Files\SAP\FrontEnd\SAPgui\sapshcut.exe";
            string sap64bit_pfad = @"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe";
            string sap_pfad = "";
            string werkfeld="P_WERKS";
            string werkzahl="0017";

            //Prüfen auf 32 oder 64 Bit System
            if (Environment.Is64BitOperatingSystem)
            {
                sap_pfad = sap64bit_pfad;
            }
            else
            {
                sap_pfad = sap32bit_pfad;
            }

            Process compiler = new Process();
            compiler.StartInfo.FileName = sap_pfad;
            compiler.StartInfo.Arguments = "/INI_FILE=\\\\xyz.de\\server\\int\\Application\\SAP\\de_SAP_PROD_SNC.INI /system=P02 /language=DE /client=001 /user=" + verbindung_zu_definitionen.getUsername() + " /command=" + transaktion + " " + sapfeld + "=" + gesamtprojektnummer;// +" " + werkfeld + "=" + werkzahl;     
            compiler.StartInfo.UseShellExecute = false;
            compiler.StartInfo.RedirectStandardOutput = true;
            compiler.Start();
            compiler.WaitForExit();
        }

Das auskommentierte bekomme ich nicht unter.
Wo liegt der Fehler beim füllen des zweiten Feldes?
Kann ich das "werkfeld" separat mit "werkzahl" befüllen?

Danke im Voraus

Gruß

Thema: tif Dateien öffnen, Stempeln abspeichern
Am im Forum: Grafik und Sound

so kurzes Zwischenergebnis, nach ein paar Fehlermeldungen mit 0x80004005 habe ich nun folgenden Code um ein tif zu öffnen, es zu "stempeln" und unter selben Namen abzuspeichern:

public void bildstempel()
        {
            string strText = verb_zu_def.get_dauertext();
            string neuerPfad = verb_zu_def.get_pfad();
            Font font = new Font("Arial", 72, FontStyle.Bold | FontStyle.Underline);
            
            //Datei öffnen  
            Stream bildstream = new FileStream(neuerPfad, FileMode.Open, FileAccess.Read, FileShare.Read);
            Bitmap bildwandel2 = new Bitmap(bildstream);


            //erstellt aus geöffneter Datei eine Grafik
            Graphics grafik = Graphics.FromImage(bildwandel2);      

            //Zeichnen Funktionen
            grafik.DrawImage(bildwandel2, 0, 0);
            grafik.DrawString(strText, font, Brushes.Red, new Point(150, 150));

            //clonen um "Schreibschutz" zu vermeiden
            Bitmap bildwandel = bildwandel2.Clone(new Rectangle(0, 0, bildwandel2.Width, bildwandel2.Height), PixelFormat.Format64bppPArgb);
            bildwandel2.Dispose();
            bildstream.Close();

            //Speichern
            try
            {
                
                bildwandel.Save(neuerPfad, ImageFormat.Tiff);
            }
            catch (Exception speicherfehler)
            {
                MessageBox.Show("Fehler:\n" + speicherfehler, "Fehler beim speichern", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //leeren - schließen
                bildwandel.Dispose();
            }

            //leeren - schließen
            bildwandel.Dispose();

        }

Nun will ich versuchen, dass der Benutzer ein Verzeichnis auswählt, und alle .tif Dateien in diesem Verzeichnis bekommen den Stempel.

Falls ich nicht weiterkomme melde ich mich :)

Gruß Edzio

Thema: tif Dateien öffnen, Stempeln abspeichern
Am im Forum: Grafik und Sound

Hallo ihr beiden,

danke für die schnelle Antworten,
ich werde euren Tips folgen.

Habe nur mit "tif stempeln" gesucht

Gruß Edzio

Thema: tif Dateien öffnen, Stempeln abspeichern
Am im Forum: Grafik und Sound

Hallo zusammen,

ich habe eine Benutzeroberfläche, in der ich gerne einen Pfad auswählen will, in welchem mehrer
.tif Dateien enthalten sind.
Diese .tif Dateien sollen mit einem Text, den der Benutzer eingibt, quasi "gestempelt" werden, und
anschließend wieder abgespeichert werden (egal ob unter gleichem namen oder neu_datei1.tif
neu_datei2.tif)...
Wie kann ich das realisieren?

Mit

            string strText = eingabetext.ToString();
            Font font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Underline);
            Graphics graph = this.CreateGraphics();
            graph.DrawImage(img, 0, 0);
            graph.DrawString(strText, font, Brushes.Red, new Point(50, 50));

befindet sich das ja nur als "Hintergrundbild" auf meiner Benutzeroberfläche,
abspeichern geht hier auch nicht.

Kann mir da wer helfen?

Danke im Voraus.

Gruß Edzio

Thema: [gelöst]Excel Zeile kopieren, und in anderes Sheet einfügen
Am im Forum: Office-Technologien

Hallo zusammen,

mittlerweile habe ich eine funktionierende Lösung gefunden:


       //Konstrukteur Abhaken Funktion
        public void excel_konstrukteur_abhaken(object konstrukteur_projektnummer_abhaken)
        {


            //Excel 1 aufrufen Zeile suchen und kopieren.

//--------------------------------------
                Range ran1 = (Range)excel_konstrukteur_abhaken_ws.Rows[zeile];
                ran1.Select();
                ran1.Copy(Missing.Value);

                excel_kopier_archiv();	//Einfügenfunktion aufrufen
//--------------------------------------

            //Excel 1 beenden und Zwischenablage leeren

        }//Ende Excel Konstrukteur abhaken




        //Abgehaktes Projekt in Archive liste_archiv.xlsx
        public void excel_kopier_archiv()
        {
            //Excel 2 aufrufen Zeile suchen und einfügen.
//--------------------------------------
               Range ran = (Range)excel_kopier_archive_ws.Cells[archive_zeile, 1]; 
			   ran.PasteSpecial(XlPasteType.xlPasteValues,
								XlPasteSpecialOperation.xlPasteSpecialOperationNone,
								Missing.Value,
								Missing.Value);
//--------------------------------------

            //Excel 2 beenden

        }

Bei der Einfügenmethode war es wichtig nur die erste Zelle in der gewünschten Zeile zu wählen,
nicht den Bereich.

Gruß Edzio

Thema: [gelöst]Excel Zeile kopieren, und in anderes Sheet einfügen
Am im Forum: Office-Technologien

Hallo nochmal,

ich habe weiter rumprobiert,
und habe es nun soweit geschafft, dass ich in der ersten Exceldatei meine komplette Zeile markieren kann,
und diese dann komplett in die zweite Exceldatei einfügen kann.

Nun habe ich aber das Problem mit der Meldung:
"Die Daten in der Zwischenablage sind in Größe und Form mit dem markierten Bereich nicht identisch.
Sollen die Daten trotzdem eingefügt werden?"

Kann ich die autmatisch mit ok bestätigen, bzw. wie kann ich Größe und Form mitkopieren und einfügen?

Hier noch die Schnipsel von meiner Kopier/Einfügenfunktion:

       //Konstrukteur Abhaken Funktion
        public void excel_konstrukteur_abhaken(object konstrukteur_projektnummer_abhaken)
        {
           

            //Excel 1 aufrufen Zeile suchen und kopieren.

//--------------------------------------
                Range ran1 = (Range)excel_konstrukteur_abhaken_ws.Rows[zeile];
                ran1.Select();
                ran1.Copy(Type.Missing);

                excel_kopier_archiv();
//--------------------------------------

			//Excel 1 beenden und Zwischenablage leeren

        }//Ende Excel Konstrukteur abhaken

		
		

        //Abgehaktes Projekt in Archive liste_archiv.xlsx
        public void excel_kopier_archiv()
        {
            //Excel 2 aufrufen Zeile suchen und einfügen.
//--------------------------------------
                Range ran = (Range)excel_kopier_archive_ws.Rows[zeile];
                ran.Select();
                excel_kopier_archive_ws.Paste(ran);      //Meldung wegbekommen Rest geht
//--------------------------------------

			//Excel 2 beenden

        }

Thema: [gelöst]Excel Zeile kopieren, und in anderes Sheet einfügen
Am im Forum: Office-Technologien

Hi Taipi,

nein nach dem kopieren rufe ich meine Funktion
(excel_kopier_archive();) auf, in der ich das andere ExcelSheet aufmache und dort dann den Inhalt reinkopieren will, nach der Funktion lösche ich es erst wieder.
Wenn ich Step by Step in die Funktion reingehe, ist der Inhalt auch im Speicher und ich kann ihn manull irgenwo reinkopieren mit STRG+V, aber mit dem Code kommt diese Fehlermeldung...

Das habe ich auch schon versucht, mit dem Makroaufzeichnen, aber ohne Erfolg.

Gruß

Thema: [gelöst]Excel Zeile kopieren, und in anderes Sheet einfügen
Am im Forum: Office-Technologien

Hallo zusammen,

ich komm einfach nicht weiter, laut google und anderen Suchmaschinen, kann man in einer Exceldatei
eine Zeile ganz normal kopieren mit .Copy()
und in eine andere Exceldatei mit .Paste Speciel(...) einfügen,
das habe ich versucht, aber es geht nicht.

Führe ich den code bis zur "einfügen Methode" aus, habe ich die kopierte Zeile in der Zwischenablage, und kann die auch ins Excel kopieren.
Das mit dem SpecialPaste() geht aber nicht, da bringt er den Fehler, welchen ich nicht verstehe (siehe Anhang).


Kann mir hier jemand weiterhelfen?

Danke.

Gruß Edzio

hier noch die beiden Funktionen,
in der ersten excel_konstrukteur_abhaken() rufe ich die eine Excelliste auf, kopiere die ausgezählte Zeile und rufe die zweite Funktion excel_kopier_archive() auf, in der ich die andere Excelliste aufrufe und die kopierte Zeile
an das Ende einfügen will.

public void excel_konstrukteur_abhaken(object konstrukteur_projektnummer_abhaken)
        {
           

            Microsoft.Office.Interop.Excel.Application excel_konstrukteur_abhaken_xlapp = new Microsoft.Office.Interop.Excel.Application();
            excel_konstrukteur_abhaken_xlapp.Visible = false;
            Workbook excel_konstrukteur_abhaken_wb;
            object missing = System.Reflection.Missing.Value;

            try
            {
                zeile = 5;

                System.Threading.Thread.Sleep(300); //Kurze Wartetimer

                excel_konstrukteur_abhaken_wb = excel_konstrukteur_abhaken_xlapp.Workbooks.Open(
                                            verbindung_zu_definitionen.getPfad(),
                                            ExcelKonstanten.UpdateLinks.DontUpdate,
                                            ExcelKonstanten.ReadWrite,
                                            ExcelKonstanten.Format.Nothing,
                                            "", // Passwort
                                            "", // WriteResPasswort
                                            ExcelKonstanten.IgnoreReadOnlyRecommended,
                                            Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
                                            "", // Trennzeichen
                                            ExcelKonstanten.Editable,
                                            ExcelKonstanten.Notify,
                                            ExcelKonstanten.Converter.Default,
                                            ExcelKonstanten.DontAddToMru,
                                            ExcelKonstanten.Local,
                                            ExcelKonstanten.CorruptLoad.NormalLoad
                                          );

                // Arbeitsblätter lesen
                Sheets sheets = excel_konstrukteur_abhaken_wb.Worksheets;
                // ein Arbeitsblatt auswählen…
                Worksheet excel_konstrukteur_abhaken_ws = (Worksheet)sheets.get_Item("CM");

                //Projektnummer suchen
                do
                {
                    zeile = zeile + 1;
                    if (excel_konstrukteur_abhaken_ws.Cells[zeile, spalte_excel_Projektnummer].Value.ToString() == "")
                    {
                        break;                                                      
                    }
                } while (excel_konstrukteur_abhaken_ws.Cells[zeile, spalte_excel_Projektnummer].Value.ToString() != konstrukteur_projektnummer_abhaken.ToString());

                //Konstrukteur abhaken im Excel
                excel_konstrukteur_abhaken_xlapp.Cells[zeile, spalte_excel_erledigt] = "x";        
//Zeile kopieren und Archivfunktion aufrufen
                excel_konstrukteur_abhaken_xlapp.Rows[zeile].Copy();
                excel_kopier_archive();

                excel_konstrukteur_abhaken_xlapp.Rows[zeile].Delete();
                Clipboard.Clear();  //Zwischenablage leeren

                excel_konstrukteur_abhaken_wb.Close(true, missing, false);        //Workbook schließen & speichern
                excel_konstrukteur_abhaken_xlapp.Quit();                          //Excel beenden
                System.Threading.Thread.Sleep(300);                       		  //Kurze Wartetimer


            }
            catch (Exception exc)
            {
                DialogResult AbfrageExcel = MessageBox.Show("Fehler beim Schreiben!\n\n" + exc + "\n\n" +
                                                            "(Sollte der Fehler häufiger vorkommen, wenden Sie sich an\n...)", "Löschen fehlgeschlagen!!",
                                                            MessageBoxButtons.OK,
                                                            MessageBoxIcon.Error);
                excel_konstrukteur_abhaken_xlapp.Quit();                         //Excel beenden

            }

            dgvclear();                                    //DGV aktualisieren
            dgv_fuellen();
            MessageBox.Show("Projekt abgehakt!", "Projekt", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }//Ende Excel Konstrukteur abhaken


        //Abgehaktes Projekt in Archive liste_archive.xlsx
        public void excel_kopier_archive()
        {
            Microsoft.Office.Interop.Excel.Application excel_kopier_archive_xlapp = new Microsoft.Office.Interop.Excel.Application();
            excel_kopier_archive_xlapp.Visible = false;
            Workbook excel_kopier_archive_wb;
            object missing = System.Reflection.Missing.Value;

            try
            {
                zeile = 5;

                System.Threading.Thread.Sleep(300); //Kurze Wartetimer

                excel_kopier_archive_wb = excel_kopier_archive_xlapp.Workbooks.Open(
                                            verbindung_zu_definitionen.getPfad_Archive(),
                                            ExcelKonstanten.UpdateLinks.DontUpdate,
                                            ExcelKonstanten.ReadWrite,
                                            ExcelKonstanten.Format.Nothing,
                                            "", // Passwort
                                            "", // WriteResPasswort
                                            ExcelKonstanten.IgnoreReadOnlyRecommended,
                                            Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
                                            "", // Trennzeichen
                                            ExcelKonstanten.Editable,
                                            ExcelKonstanten.Notify,
                                            ExcelKonstanten.Converter.Default,
                                            ExcelKonstanten.DontAddToMru,
                                            ExcelKonstanten.Local,
                                            ExcelKonstanten.CorruptLoad.NormalLoad
                                          );

                // Arbeitsblätter lesen
                Sheets sheets = excel_kopier_archive_wb.Worksheets;
                // ein Arbeitsblatt auswählen…
                Worksheet excel_kopier_archive_ws = (Worksheet)sheets.get_Item("CM");

                //Leer Zeile suchen
                do
                {
                    zeile = zeile + 1;

                } while (excel_kopier_archive_ws.Cells[zeile, spalte_excel_Projektnummer].Value != null);

                //einfügen der ausgeschnittenen Zeile
               
                excel_kopier_archive_xlapp.Rows[zeile].PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);

                excel_kopier_archive_wb.Close(true, missing, false);        //Workbook schließen & speichern
                excel_kopier_archive_xlapp.Quit();                          //Excel beenden
                System.Threading.Thread.Sleep(300);                       		  //Kurze Wartetimer


            }
            catch (Exception exc)
            {
                DialogResult AbfrageExcel = MessageBox.Show("Fehler beim einfügen ins Archive!\n\n" + exc + "\n\n" +
                                                            "(Sollte der Fehler häufiger vorkommen, wenden Sie sich an\n...)", "Archivieren fehlgeschlagen!!",
                                                            MessageBoxButtons.OK,
                                                            MessageBoxIcon.Error);
                excel_kopier_archive_xlapp.Quit();                         //Excel beenden

            }
        }

Thema: DataGridView: LinksKlick und Rechtsklick
Am im Forum: GUI: Windows-Forms

Hallo Tefla,

Danke, durch deinen Hinweis habe ich nun nicht
CellMousDown
DataGridViewCellMouseEventArgs
verwendet, sondern nur
MouseDown
MouseEventArgs

jetzt scheint es zu funktionieren.


Sry wenn ich ab und zu so blöd nachfrage,
aber manchmal ist man einfach vor lauter Buchstaben blind :-(

Danke

Gruß Edzio

Thema: DataGridView: LinksKlick und Rechtsklick
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

mal wieder ein Problem, wo ich entweder im Moment zu blind bin oder es einfach nicht so geht...

Ich habe ein DataGridView,
per LinksClick markiert sich ja wunderbar die Zeile und man kann das Clickevent ausführen.

Nun will ich aber mit Hilfe des Mous Events eine Funktion ausführen lassen wenn man Links klickt und
eine andere Funktion, wenn man rechtsklickt.
Die Idee nach Google und Co:

        private void dGvexcel_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {

 		DataGridView.HitTestInfo mausposition = dGvexcel.HitTest(e.X, e.Y);
                dGvexcel.CurrentCell = dGvexcel.Rows[mausposition.RowIndex].Cells[mausposition.ColumnIndex];
                dGvexcel.CurrentCell.Selected = true;
                dgv_index_ausles = dGvexcel.CurrentCell.RowIndex;



            
            //-------LINKSKLICK
            if (e.Button == MouseButtons.Left)
            {
                
            }
            //-------RECHTSKLICK
            if (e.Button == MouseButtons.Right)
            {
                               
            }

        }

Aber irgendwie bekomme ich keine Zeile im DGV ausgewählt, da irgendwoher ein -Wert in die Koordinaten geschrieben wird.

Was ist falsch?

Danke im Voraus.

Gruß

Thema: Interaction.InputBox: Buttons "OK" "Abbrechen" und "X" abfragen
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

mit dem String.IsNullOrEmpty(inputbox)
funktioniert das Abbrechen,
allerdings ist das Problem, das herbivore beschrieben hat der Fall.
Dann such ich mir mal eine gute Inputbox, und versuch die einzubauen.

Gruß

Thema: Interaction.InputBox: Buttons "OK" "Abbrechen" und "X" abfragen
Am im Forum: GUI: Windows-Forms

Hallo ihr beiden,

schon mal danke für die rasche Antworten.

@Jamikus
ich glaub das ist die Methode.

werde es prüfen und mich wieder melden.

Die Methode von Coffeebean werde ich mir auch genauer anschauen.


Gruß

Thema: Interaction.InputBox: Buttons "OK" "Abbrechen" und "X" abfragen
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

es gibt ja die Inputbox für C#.
Den eingegebenen Wert bekomme ich ja ganz normal mit

wert=Interaction.InputBox("blabla","Ü-Schrift","Voreingabe");

Wie kann ich hier aber die Buttons "OK" "Abbrechen" und "X" abfragen,
bzw. welche Werte liefern die?

So einfach mit DialogResult.Abort o.Ä. geht es nicht.

Danke.

Gruß

Thema: [gelöst] DataGridView: CellDoubleClick Event startet nur bei Klick auf die Werte in den Zellen
Am im Forum: GUI: Windows-Forms

also falls du damit meinst,
wenn man auf des DGV im Desginer doppelklickt,
hier erstellte mir das Visual ein
dGexcel_CellContentclick event,
das ich dann umgeändert habe und in der Form1.Designer.cs angepasst habe,


ok
habe gerade alles was das DGV betrifft gelöscht, und neu erstellt
nun geht es,
schätze durch mein manuelles ändern, habe ich eine Kleinigkeit übersehen...

Danke vielmals Telfa

Thema: [gelöst] DataGridView: CellDoubleClick Event startet nur bei Klick auf die Werte in den Zellen
Am im Forum: GUI: Windows-Forms

mh eigentlich nicht viel wildes, hab das Event mal im Anschluss gepostet.
Bei den Eigenschaften vom dgv habe ich alles auf Standard gelassen bis auf den Bereich "Verhalten"
(siehe Anhang).

Gruß

//dgv markierte Zeile löschen
        private void dGvexcel_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            dgv_index_ausles = dGvexcel.CurrentCell.RowIndex;
            dgv_wert_ausles = dGvexcel.CurrentCell.Value;
            dgv_spaltzahl_ausles = dGvexcel.ColumnCount;
            eingabe_kontrolle.set_check_admin(verbindung_zu_definitionen.getUsername());

            //Daten aus dgv lesen ermitteln
            for (dgv_spaltzahl_reell_ausles = dgv_spaltzahl_ausles - 1; dgv_spaltzahl_reell_ausles ≥ 0; dgv_spaltzahl_reell_ausles--)
            {
                if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektleiter")
                {
                    dgv_projektleiter_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
                }

                if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Konstrukteur")
                {
                    dgv_konstrukteur_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
                }

                if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektnummer")
                {
                    dgv_projektnummer_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
                }
            }

            //Benutzerfrage ob löschen oder nicht
            DialogResult AbfrageDGV = MessageBox.Show("Wollen Sie das ausgewählte Projekt:\n" + dgv_projektnummer_ausles + "\nwirklich löschen?\n" + "Index: " + dgv_index_ausles + "\n" + "Wert: " + dgv_wert_ausles + "\n" + "Spalten: " + dgv_spaltzahl_ausles + "\n" + "PL: " + dgv_projektleiter_ausles, "Projekt löschen", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (AbfrageDGV == DialogResult.Yes)
            {
                if (verbindung_zu_definitionen.getUsername() == dgv_projektleiter_ausles.ToString() || eingabe_kontrolle.get_check_admin() == true)
                {
                    //Abfrage ob bereits Konstrukteur drin steht.
                    if (dgv_konstrukteur_ausles != null)
                    {
                        MessageBox.Show("Sie können das Projekt nicht löschen,\nda es bereits in Arbeit ist!\n\n Bitte mit dem entsprechenden Entwickler klären!", "Löschen nicht möglich!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }

                    //Excellaufruf einbauen und Zeile suchen und löschen
                    MessageBox.Show("USER Passt\n" + "PL: " + dgv_projektleiter_ausles + "\nKonstr: " + dgv_konstrukteur_ausles + "\nProjekt: " + dgv_projektnummer_ausles, "Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    Microsoft.Office.Interop.Excel.Application dgv_projekt_loeschen_xlapp = new Microsoft.Office.Interop.Excel.Application();
                    dgv_projekt_loeschen_xlapp.Visible = false;
                    Workbook dgv_Projekt_loeschen_wb;
                    object missing = System.Reflection.Missing.Value;

                    try
                    {
                        zeile = 5;
                        string tmp_dgv_projektnummer_ausles = Convert.ToString(dgv_projektnummer_ausles);
                        System.Threading.Thread.Sleep(1000); //Kurze Wartetimer

                        dgv_Projekt_loeschen_wb = dgv_projekt_loeschen_xlapp.Workbooks.Open(
                                                    verbindung_zu_definitionen.getPfad(),
                                                    ExcelKonstanten.UpdateLinks.DontUpdate,
                                                    ExcelKonstanten.ReadWrite,
                                                    ExcelKonstanten.Format.Nothing,
                                                    "", // Passwort
                                                    "", // WriteResPasswort
                                                    ExcelKonstanten.IgnoreReadOnlyRecommended,
                                                    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
                                                    "", // Trennzeichen
                                                    ExcelKonstanten.Editable,
                                                    ExcelKonstanten.Notify,
                                                    ExcelKonstanten.Converter.Default,
                                                    ExcelKonstanten.DontAddToMru,
                                                    ExcelKonstanten.Local,
                                                    ExcelKonstanten.CorruptLoad.NormalLoad
                                                  );

                        // Arbeitsblätter lesen
                        Sheets sheets = dgv_Projekt_loeschen_wb.Worksheets;
                        // ein Arbeitsblatt auswählen…
                        Worksheet dgv_Projekt_loeschen_ws = (Worksheet)sheets.get_Item("CM");

                        //Projektnummer suchen
                        do
                        {
                            zeile = zeile + 1;
                        } while (dgv_Projekt_loeschen_ws.Cells[zeile, 1].Value.ToString() != tmp_dgv_projektnummer_ausles);

                        //komplette Zeile löschen
                        dgv_projekt_loeschen_xlapp.Rows[zeile].Delete();            //löschen im Excel
                        dGvexcel.Rows.RemoveAt(dgv_index_ausles);                   //löschen im DGV

                        dgv_Projekt_loeschen_wb.Close(true, missing, false);        //Workbook schließen & speichern
                        dgv_projekt_loeschen_xlapp.Quit();                          //Excel beenden
                        System.Threading.Thread.Sleep(300);                         //Kurze Wartetimer


                    }
                    catch (Exception exc)
                    {
                        DialogResult AbfrageExcel = MessageBox.Show("Fehler beim Löschvorgang!\n\n" + exc + "\n\n" +
                                                                    "(Sollte der Fehler häufiger vorkommen, wenden Sie sich an\n....)", "Löschen fehlgeschlagen!!",
                                                                    MessageBoxButtons.OK,
                                                                    MessageBoxIcon.Error);
                        dgv_projekt_loeschen_xlapp.Quit();                         //Excel beenden

                    }

                }
                else
                {
                    MessageBox.Show("USER Passt nicht\n" + "PL: " + dgv_projektleiter_ausles + "\nKonstr: " + dgv_konstrukteur_ausles + "\nProjekt: " + dgv_projektnummer_ausles, "Excel", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            if (AbfrageDGV == DialogResult.No)
            {
                //keine Funktion
            }


        }//ENDE DGV ABfrag für löschen

Thema: [gelöst] DataGridView: CellDoubleClick Event startet nur bei Klick auf die Werte in den Zellen
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich kenn mich noch nicht sonderlich gut mit dem DGV aus,
habe es aber schonmal geschafft, Daten aus m Excel einzulesen. :-)

Mein aktuelles Problem ist, wenn ich auf eine Zeile/Zelle doppelklicke, soll ein Event gestartet werden
(Zeile löschen, davor aber Nutzer prüfen etc.)
Das Event startet aber nur, wenn ich direkt auf den Wert in der Zelle Klicke,
ich will aber, dass der "Klick" in der ganzen Zelle/Zeile funktioniert.

Hier ist der Anfang von meinem Code:

        //dgv markierte Zeile löschen
        private void dGvexcel_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            dgv_index_ausles = dGvexcel.CurrentCell.RowIndex;
            dgv_wert_ausles = dGvexcel.CurrentCell.Value;
            dgv_spaltzahl_ausles = dGvexcel.ColumnCount;
            eingabe_kontrolle.set_check_admin(verbindung_zu_definitionen.getUsername());

            //Daten aus dgv lesen ermitteln
            for (dgv_spaltzahl_reell_ausles = dgv_spaltzahl_ausles - 1; dgv_spaltzahl_reell_ausles ≥ 0; dgv_spaltzahl_reell_ausles--)
            {
                if (dGvexcel.Columns[dgv_spaltzahl_reell_ausles].Name == "Projektleiter")
                {
                    dgv_projektleiter_ausles = dGvexcel.Rows[dgv_index_ausles].Cells[dgv_spaltzahl_reell_ausles].Value;
                }
....

Anbei noch ein Ausschnit von meinem DGV.
Danke im Voraus.

Gruß

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

[erledigt]
Das mit dem DFS von vbprogger war der springende Punkt.
Danke an alle für ihr Bemühen.

Gruß Edzio

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@Bernd
nein es kommen keine Leerzeichen vor.

Ok versuch ich auch mal.

@vbprogger
ich hab mal einen Screenshoot angehängt, der die Ansicht im Explorer zeigt.
Als Server.net habe ich dann das sdet2353.de.xxxxxxx.net\
eingesetzt.

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

also wenn ich
das direkt in die system32/cmd.exe eingeb
sagt er dass der Netzwerkname nicht gefunden wurde,
im SysWOW64/cmd.exe
kommt
Ds System kann den angegebenen Pfad nicht finden.

Habe es mit meinen richtigen Daten so eingegeben, wie du es geschrieben hast.

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Bernd,

direkt kann ich das nicht starten,
das ist eine .cmd Datei, die unsere CAD Software startet und sämtliche Tools.

Diese Datei wollte ich bereits direkt aufrufen, aber mit den Drei Startversuchen kamen zwei unterschiedliche Ergebnise, was mich auf die Idee mit der Verknüpfung brachte.
Variante 1

// Api Deklarieren
        [DllImport("shell32.dll", EntryPoint = "ShellExecute")]
        public static extern long ShellExecute(int hwnd, string cmd, string file, string param1, string param2, int swmode);

        static void Main(string[] args)
        {
            string USER = Environment.UserName;
            string startpfad = "\\\\server.net\\aaaaa\\bbb\\ccc\\ddddd\\eeeee\\fffff.cmd";

            try
            {
                ShellExecute (0, "open", startpfad, "", "", 2);
            }

Variante 2

static void Main(string[] args)
        {
            try
            {
                Process.Start("cmd.exe", "/c \\\\server.net\\aaaaa\\bbb\\ccc\\ddddd\\eeeee\\fffff.cmd");
            }

Variante 3

static void Main(string[] args)
        {
            string startpfad = "\\\\server.net\\aaaaa\\bbb\\ccc\\ddddd\\eeeee\\fffff.cmd";

			Process starten = new Process();
            try
            {
                starten.StartInfo.UseShellExecute = true;
                starten.StartInfo.FileName = startpfad;
                starten.StartInfo.Arguments = "";
                starten.Start();
            }

Alle 3 Varianten versucht zu starten (auch direkt mit dem Laufwerkbuchstabe anstelle dem Server),

es kam immer bei:
Variante 1 und 2
kurz das DOS Fenster danach nichts
und bei Variante 3
kam ebenfalls der Fehler mit dem Win32...
(Eine andere .cmd Datei läßt sich starten, daher bin ich davon ausgegangen, dass es an dieser selbst liegt und ich kam auf die Idee "Verknüpfung")
Wo ich jetzt beim nächsten Problem liege mit der "Serveradresse" X(

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Herbivore
also auf dem Server liegt ne Verknüpfung zu einem Programm
(ganz normal erstellt mit "Rechtsklick->Verknüpfung erstellen")
und die will ich "aufrufen" um das verknüpfte programm zu starten
und parallel dann noch andere Dinge erledigen will (die bis jetzt noch nicht im Code eingebaut sind)
(Die Datei soll zentral liegen, damit diese mehrer User ansprechen können)

Gruß

Thema: [erledigt] Auf Server liegende Verknüpfung starten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

mh,
das ist komisch, es kommt ein Netzwerkfehler,
"Auf \\...\...\ konnte nicht zugegriffen werden"
???
Blicks nicht, ich habe doch Berechtigungen und alles.

Hab gerade nochwas mit file://\\server.net\...
getestet, des geht gar nicht...