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: [gelöst] Windows Form Webbrowser wirft Javascript-Fehler
Am im Forum: GUI: Windows-Forms

also mit dem Chromium hat es gut geklappt
sogar mit meinem tabControl und in ein paar Tabs eine feste Seite einzubinden.
Danke nochmal.

Grüßle

P.S.:
Falls irgendjemand auch mehrere Tabs befüllen will hier n Code Beispiel
Code Beispiel meherere Tabs befüllen

Und der Grundaufbau:

Grundaufbau

Thema: [gelöst] Windows Form Webbrowser wirft Javascript-Fehler
Am im Forum: GUI: Windows-Forms

ok danke
schau ich mir an. Bei Fragen meld ich mich wieder :)

Thema: [gelöst] Windows Form Webbrowser wirft Javascript-Fehler
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich habe eine Windows Form, mit einem TabControl, unter anderem hab ich dort einen Reiter, in dessem ich einen Webbrowser platziert habe, und ihm eine feste URL gegeben habe.
Starte ich nun die Anwendung und die URL wird aufgerufen, erscheint eine JavaScriptfehlermeldung
(Bild siehe Anhang)

Rufe ich die selbe Seite im Internetexplorer auf, kommt keine Fehlermeldung (Im Netz steht, dass der "Webbrowser" die Einstellungen vom IE nutzt).

Was ist hier falsch, bzw. was kann ich machen /muss ich beachten?

Danke. im voraus Gruß

Thema: Wie kann ich einen Termin in Exchange Online eintragen?
Am im Forum: Office-Technologien

hab mich grad ein wenig eingelesen,
das sieht sehr kompliziert aus, da werde ich noch eine Weile benötigen.

Gruß Frank

Thema: Wie kann ich einen Termin in Exchange Online eintragen?
Am im Forum: Office-Technologien

Huhu,

mh dann hab ich was überlesen,
also bin ich auf dem richtigen Weg?

Bin halt noch nicht sooo erfahren in vielen Funktionen etc. deshalb vlt auch die "noobigen" Fragen.

Thema: Wie kann ich einen Termin in Exchange Online eintragen?
Am im Forum: Office-Technologien

Hallo zusammen,

ok super danke, das mit dem
https://outlook.office365.com/EWS/Exchange.asmx
funktioniert,
nun steh ich vor einem neuen Problem und zwar bei der Anmeldung.

ExchangeCredentials ECcredentials = new WebCredentials("username", "Passwort");

Der Username ist keine Problem, aber das Passwort.
Ich will nicht statisch mein Passwort und mein Nutzer verwenden, sondern dass der
jeweilige User sich anmeldet.
Kann man das Windowspasswort übergeben (nur übergeben, nicht speichern sonst irgendwas) ohne dass der User sich jedesmal manuell anmelden muss?

P.S.: habe

service.UseDefaultCredentials = true;
probiert geht aber nicht, da der Username nicht passt
ist bei uns [email protected]

Thema: Wie kann ich einen Termin in Exchange Online eintragen?
Am im Forum: Office-Technologien

Hallo zusammen,

ich habe seither über mein Programm einen "Termin" in den Mailbox Kalender eintragen können, dies habe ich über:


ExchangeService service = new ExchangeService();
service.AutodiscoverUrl(exchange_mailbox, RedirectionUrlValidationCallback);
            Appointment meeting = new Appointment(service);


 meeting.Subject = projektnummer_aus_form1 + "--" + aktuelle_benutzer;
            meeting.Body = "Grobveranschlagte Arbeitszeit für das Projekt >><b>"+projektnummer_aus_form1+"</b><< Seitens der Entwicklung/Konstruktion.<br><br>" + 
                           "Diese Zeit kann jedoch variieren aufgrund sämtlicher Einflüsse wie (Fehlprojektierungen, Wartezeiten, Urlaubszeiten, Krankheitszeiten etc.)";
            //Zeit einstellen
            meeting.IsAllDayEvent = true;
            meeting.Start = startzeit;
            meeting.End = endzeit;
 //Farbe Kategorie einstellen
            meeting.Categories.Add(aktuelle_benutzer);

            //Erinnerung einstellen
            meeting.IsReminderSet = false;
            //meeting.ReminderMinutesBeforeStart = 60;

            // Send the meeting request
            meeting.Save(new FolderId(WellKnownFolderName.Calendar, exchange_mailbox));






 private static bool RedirectionUrlValidationCallback(string redirectionUrl)
        {
            // The default for the validation callback is to reject the URL.
            bool result = false;

            Uri redirectionUri = new Uri(redirectionUrl);

            // Validate the contents of the redirection URL. In this simple validation
            // callback, the redirection URL is considered valid if it is using HTTPS
            // to encrypt the authentication credentials. 
            if (redirectionUri.Scheme == "https")
            {
                result = true;
            }
            return result;
        }

realisiert, hat auch wunderbar funktioniert.

Unsere IT hat aber nun auf Exchange Online umgestellt,
davor war Exchange OnPromise.
Nun bekomme ich dauernd den Fehler, dass AutodiscoverUrl nicht lokalisiert werden kann.
Nach einem Nachfragen in der IT heißt es, dass das nicht mehr geht.

Nach vielem Googeln habe ich auch nichts passendes gefunden.

Weiß zufällig einer von euch etwas, wie ich weiterhin die "Termine" in den Cloudkalender bekomme?

Danke im Voraus.

Gruß Frank

Thema: [gelöst] Kann ich OLEDB in mein Programm integrieren und mit ausliefern?
Am im Forum: Datentechnologien

ok schade,
dann müßen die Kollegen, welche ein neues Office bekommen eben die Datei nachinstallieren.
Auch doof gelöst von Microsoft.

Danke für eure Hilfe.

Gruß Frank

Thema: [gelöst] Kann ich OLEDB in mein Programm integrieren und mit ausliefern?
Am im Forum: Datentechnologien

ok danke, dann versuch ich das mal.
Irgendeinen Verweis gibt es nicht, den ich einbinden könnte?

Thema: [gelöst] Kann ich OLEDB in mein Programm integrieren und mit ausliefern?
Am im Forum: Datentechnologien

Hallo zusammen,

ich nutze um eine Exceltabelle auszulesen die OLED Technologie:

var excelFile = verbindung_zu_definitionen.getPfad();
                var hdr = "Yes";                    //hasHeaders ? "Yes" : "No";
                var binding_excel = new BindingSource();
                string connectionString;
                //Prüfen welches Excel OLEDB geladen werden soll
                if (excelFile.Substring(excelFile.LastIndexOf('.')).ToLower() == ".xlsx")
                    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile +
                                ";Extended Properties=\"Excel 12.0 Macro;HDR=" + hdr + ";IMEX=1\"";
                else
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + 
                                ";Extended Properties=\"Excel 8.0;HDR=" + hdr + ";IMEX=1\"";

Sämtliche Kollegen nutzen mein Tool ohne Probleme
(Win7 64bit Office 2007)
Nun hat ein Kollege einen neuen PC bekommen mit
Win7 64bit Office 2013
und bei ihm funktioniert der Aufruf nicht mehr,
es kommt der Fehler:
Fehler
Microsoft.ACE.OLEDB.12.0 Provider ist nicht auf dem lokalen Computer regisitriert.

Nach meiner Recherche fand ich sämtliche Angaben, dass er folgendes installieren soll:
https://www.microsoft.com/de-de/download/confirmation.aspx?id=23734

Meine Frage,
kann ich da auch irgendwas in mein Programm über den VS2015 einbinden (Verweis o.Ä.), so dass nicht jeder der nun ein neues Office bekommt selbstständig etwas installieren muss?

Wollte schon den Verweis
Microsoft Office 12.0 Access Database Engine Object Library
hinzufügen, das nimmt er allerdings nicht.

Danke im Voraus.

Gruß Frank

Thema: Versendete Email wird unter Outlook 2007 oder 2013 falsch dargestellt
Am im Forum: Office-Technologien

ok danke,
dann versuch ich das mal.


Gruß

Thema: Versendete Email wird unter Outlook 2007 oder 2013 falsch dargestellt
Am im Forum: Office-Technologien

Hallo zusammen,

in meinem Code erstelle ich eine E-Mail mit HTML Body.
In der Vorschau sieht die "E-Mail" auch so aus, wie ich es mir gedacht habe.
Wird diese nun versendet und man betrachtet sie unter Outlook 2007 oder 2013
so fehlt ein Teil meiner Style Formatiereung der Tabelle.
Im Internet habe ich bereits gesucht, ob Outlook gewisse HTML Codes nicht kann,
laut meiner Recherche sind color, background-color, font-wight und font-size aber machbar.

Sieht jemand irgend einen anderen Grund, dass es nicht funktioniert?

using system.net.mail
...
                string nachricht_mail4 ="<font face =arial>" + 
                                        "<table border=0 cellpadding=2 cellspacing=2>" +
                                         " <tbody>" +
                                             "<colgroup>" +
                                                    "<col width=250>" +
                                                    "<col width=250>" +
                                                "</colgroup>" +
                          DAS hier funktioniert nur zum Teil                  "<tr style=color:#4169e1; style=background-color:#D3D3D3; style=font-weight:bolder; style=font-size:large>" +
                                                "<td colspan=2>Projekt beendet</td>" +
                                                "<td align=right>" + DateTime.Now.ToShortDateString() + "</td>" +
                                            "</tr>" +
                                            "<tr>" +
                                                "<td>Projekt:</td>" +
                                                "<td>" + mail4projektnummer + "</td>" +
                                            "</tr>" +
                                            "<tr>" +
                                                "<td>Projektleiter:</td>" +
                                                "<td>" + mail4empfaenger + "</td>" +
                                            "</tr>" +
                                            "<tr>" +
                                                "<td>Entwickler:</td>" +
                                                "<td>" + mail4absender + "</td>" +
                                            "</tr>" +
                                          "</tbody>" +
                                        "</table>" +
                                        
					"<br>wurde abgeschlossen." +
                                        
					"<br><br><b><u>Team 1 & 2 & 3:</u></b>" +
                                        "<br>Die fertigen Zeichnungen befinden sich im Projektlaufwerk in dem Ordner xyz!" +
                                        "<br>Link Projektlaufwerk:<br>" +
                                        "<A HREF=file:///" + gesamt_ordner_pfad + ">PROJEKT-GRUND-ORDNER</A> <sub><small>(Aktuelle Version ist zu beachten)</small></sub>" +
                                        
                                        "<br><br><b><u>Team 4:</u></b>" +
                                        "<br>Die fertigen Zeichnungen befinden sich unter der jeweiligen Projektnummer im" +
                                        "<br><A HREF=http://abbbabbaaa.bbabba:1234/mmweb/index.jsp >Model-Manager</A>" +
                                        "<br>oder im" +
                                        "<br><A HREF=https://hjhjhjhjhj.com/app/tcomp/xyzz</A>" +
                                        "<br>Link Projektlaufwerk:<br>" +
                                        "<A HREF=file:///" + gesamt_ordner_pfad + ">PROJEKT-GRUND-ORDNER</A> <sub><small>(Aktuelle Version ist zu beachten)</small></sub>" +
                                        "<br><i>Hinweis:</i><br>" +
                                        "<i>Vorabmodelle befinden sich im Ordner 2.5</i>" +
                                        "</font>";

                Email_Projekt_abgeschlossen.Body = nachricht_mail4;
                Email_Projekt_abgeschlossen.IsBodyHtml = true;
...

Im Anhang habe ich noch ein Bild, wie es in der Vorschau aussieht und nachher als Mail ankommt.
Outlook ist auf HTML gestellt.

Kann das mit dem FirmenMail-Server zusammenhängen, dass er bestimmte Styles blockiert?

Danke im Voraus.

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

passt danke :)
hast mir schon viel geholfen

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Hi,
ok die Kategoriennamen kenn ich.
Die Farbe funktioniert auf diesem Weg :)

Kann man die Kategorienliste nicht aus der Mailbox auslesen,
und so alle aktuellen Namen erhalten um diese dann zu setzen?

Würde Arbeit ersparen, wenn z.b. eine neue Kategorie im Outlook erzeugt wird.

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

ja perfekt
nur eine Zeile angepasst :)

 meeting.Save(new FolderId(WellKnownFolderName.Calendar, "[email protected]"));

Weißt du/ihr noch zufällig, wie ich einem Ereignis einer Kategorie, welche ich über das Outlook
angelegt habe, zuteile?
also z.B.:
Termin hat Farbe blau Text Wichtig

gibt es da bei dem EWS etwas in der Richtung
meeting.Categorie = Color.blue;

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Hallo Taipi88,

danke dir.
Werde deine Vorschläge ausprobieren.

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

irgendwie check ich gerade was nicht mit der Erstellung eines Termins per EWS.

Ich habe eine eigene Mailbox und eine andere firmeninterne Mailbox, auf welche ich die Berechtigung besitze und diese auch im Outlook eingebunden habe.

Nun erstell ich ein Ereignis (keine Besprechung) mit Hilfe folgendes Codes:

 private void kalender_eintrag_erstellen()
        {

            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
            service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);
            Appointment meeting = new Appointment(service);
            //service.TraceEnabled = true;
            //service.TraceFlags = TraceFlags.All;

            
            // Set the properties on the meeting object to create the meeting.
            meeting.Subject = projektnummer_aus_form1 + "--" + aktuelle_benutzer;
            meeting.Body = "Grobveranschlagte Arbeitszeit für das Projekt Seitens der Entwicklung/Konstruktion.\r\n" + 
                           "Diese Zeit kann jedoch variieren aufgrund sämtlicher Einflüsse wie (Fehlprojektierungen, Wartezeiten, Urlaubszeiten, Krankheitszeiten etc.)";
            //Zeit einstellen
            meeting.IsAllDayEvent = true;
            meeting.Start = DateTime.Now;
            meeting.End = meeting.Start.AddDays(5);

            //Erinnerung einstellen
            meeting.IsReminderSet = false;
            //meeting.ReminderMinutesBeforeStart = 60;

            // Send the meeting request
            meeting.Save(WellKnownFolderName.Calendar, SendInvitationsMode.SendToNone);
        }
Das komische ist, obwohl ich die andere firmeninterne Mailbox anspreche, bekomme ich dieses Ereignis in meine eigenen Mailbox gesetzt.
Wie bekomme ich dieses Ereignis nur in die andere Mailbox?

Ich habe über das Outlook Kategorien erzeugt (Farbe + Name)
kann ich die Kategorien je nach Name dem Ereignis zuteilen?

Danke im Voraus.

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Morgen Taipi88,

danke für die Info,
dann versuch ich mal mein Glück :)

Gruß

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

die Stichpunkte von wcseller sind schon in die Richtung wie ich es mir erst mal vorgestellt habe.
Nur immer diese Zusatz-Aussagen
wie
geh doch googeln
wir machen nicht deine Arbeit
...
nerven

Ich such, bevor ich hier etwas poste, nach Lösungen,
wenn ich nichts finde oder ich bei manchen Dingen nur Bahnhof verstehe (bin nicht Profi)
poste ich um Rat zu suchen...

Mein falls jemand soetwas ähnliches schon gemacht / gegoogelt hat und z.B. einen Link hat ist das auch ok.

Was komplett fertiges mit copy paste einfügen will ich auch nicht, dann weiß ich nicht mal was der Code alles so anstellt...

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Naja war doch eine normale Frage,
und es geht nicht darum ob jemand "meine Arbeit" macht.
Ich frage nach einem Tip von Leuten die Profis sind,
wie man am besten an die Sache herangehen kann...

Schickst du deinen Lehrling auch googeln wenn er nach einem Tip fragt?

Danke dennoch für die Stichworte.

Thema: Outlook 2007 Kalender DGV o.Ä. VS 2015 RC
Am im Forum: GUI: Windows-Forms

Hallo zusammen,
hat mir jemand einen guten einfachen tip,
wie ich in ein ganz normales Windows Form einen freigegeben Outlook-Kalender (Exchangeserver vorhanden)
abbilden kann,
einträge tätigen kann (neue eintragen, ändern, löschen)
automatisch aktualisiert...


Neuerdings habe ich das neue Visual Studio 2015 RC aufgespielt bekommen,
hier funktionieren manche Dinge nicht mehr von alten ähnlichen Themen, die man im Netz findet...

Danke im Voraus.

Gruß

Thema: [gelöst]DataGridView und Kontextmenü + Icon
Am im Forum: GUI: Windows-Forms

ok hab es :)

habe die Bilder in die Ressourcen eingebunden und mit:

        Image kon_bild_1 = Arbeitsvorrat.Properties.Resources.loeschen;
        Image kon_bild_2 = Arbeitsvorrat.Properties.Resources.notiz;
        Image kon_bild_3 = Arbeitsvorrat.Properties.Resources.ordner;

zugewiesen.

Gruß

Thema: [gelöst]DataGridView und Kontextmenü + Icon
Am im Forum: GUI: Windows-Forms

ha perfekt, scheint zu funktionieren :)
Danke.

Wenn ich mein Projekt freigebe, in welche Ordner speicher ich die Bilder, dass die mit freigegeben werden?

So habe ich es voll umgesetzt:

  public partial class Arbeitsmaske : Form
    {
        public string menue_text_1 ="Projekt löschen";
        public string menue_text_2 ="Bemerkung anhängen";
        public string menue_text_3 ="Projektordner öffnen";

        Image kon_bild_1 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\loeschen.bmp");
        Image kon_bild_2 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\notiz.bmp");
        Image kon_bild_3 = Bitmap.FromFile("U:\\Programmierung\\arbeitsvorrat\\bilder\\kontextmenue\\ordner.bmp");

        public void kontextmenue_dgv(object sender, MouseEventArgs e)
        {
            kontext_menu.Items.Clear();

            ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem(menue_text_1, kon_bild_1, menueItem_1_Click);
            ToolStripMenuItem toolStripItem2 = new ToolStripMenuItem(menue_text_2, kon_bild_2, menueItem_2_Click);
            ToolStripMenuItem toolStripItem3 = new ToolStripMenuItem(menue_text_3, kon_bild_3, menueItem_3_Click);

            kontext_menu.Items.Add(toolStripItem1);
            kontext_menu.Items.Add(toolStripItem2);
            kontext_menu.Items.Add(toolStripItem3);

            int currentMouseOverRow = dGvexcel.HitTest(e.X, e.Y).RowIndex;
            kontext_menu.Show(dGvexcel, new System.Drawing.Point(e.X, e.Y));
        }

Thema: [gelöst]DataGridView und Kontextmenü + Icon
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich habe ein DGV mit einem Kontextmenü (siehe Anhang rechtsklick_icon.jpg)
Dies habe ich mit folgendem Code realisiert:

namespace Arbeitsvorrat
{
    public partial class Arbeitsmaske : Form
    {
        public string menue_text_1 ="Projekt löschen";
        public string menue_text_2 ="Bemerkung anhängen";
        public string menue_text_3 ="Projektordner öffnen";

        public void kontextmenue_dgv(object sender, MouseEventArgs e)
        {
            ContextMenu m = new ContextMenu();
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_1, new EventHandler(menueItem_1_Click)));
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_2, new EventHandler(menueItem_2_Click)));
            m.MenuItems.Add(new System.Windows.Forms.MenuItem(menue_text_3, new EventHandler(menueItem_3_Click)));

            int currentMouseOverRow = dGvexcel.HitTest(e.X, e.Y).RowIndex;
                        
            m.Show(dGvexcel, new System.Drawing.Point(e.X, e.Y));

        }

        //Funktion Menüpunkt 1  --> Projekt löschen
        private void menueItem_1_Click(Object Sender, EventArgs e)
        {

            //Benutzerfrage ob löschen oder nicht
            DialogResult AbfrageDGV = MessageBox.Show("Wollen Sie das ausgewählte \nProjekt:\t\t" + dgv_projektnummer_ausles + "\nProjektleiter:\t" + dgv_projektleiter_ausles + "\nwirklich löschen?\n", "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.

Die Funktion "kontextmenue_dgv" rufe ich aus meiner Rechtsklick abfrage auf:

           
 private void dGvexcel_MouseDown(object sender, MouseEventArgs e)
        {
 if (e.Button == MouseButtons.Right)
            {
                kontextmenue_dgv(sender, e);
            }//Ende RechtsKlick

Das funktioniert wie ich mir es vorstelle,
nun wollte ich fragen, ob es geht Icons einzufügen, an die Stelle, die im Screenshoot schwarz markiert sind?
Beispiel beim Projekt löschen ein rotes X
Welches Format müssen diese Icons haben?
Wo müssen diese gespeichert sein?

Danke im Voraus.

Gruß

Thema: Gefilterte Spalte oder Header im DataGridView farbig hinterlegen
Am im Forum: GUI: Windows-Forms

also nachdem ich einen Tip bekommen habe klappt es nun.
Es liegt daran, wie man die "DataGridViewAutoFilterColumnHeaderCell.cs"
integriert hat, entweder über die .dll
oder direkt den Verweis auf die .cs
Hat man die .dll muss das Projekt in der sich die .cs Datei befindet geöffnet werden und dort den gleich folgenden Code einfügen, anschließend das Projekt neu generieren, so dass die Änderungen alles compailiert werden und in der .dll wirksam sind.
Ansonsten muss man die integrierte .cs Datei im Projektmappenexplorer öffnen und den Code einfügen.

Sucht in diese .cs Datei die Stelle an der die Paint funktion aufgerufen wird, und fügt dort die If-Abfrage ein, die nach meinem Kommentar ("//von mir eingefügt um den gefiltertetn hintergrund zu visualisieren") steht :


        /// <summary>
        /// Paints the column header cell, including the drop-down button. 
        /// </summary>
        /// <param name="graphics">The Graphics used to paint the DataGridViewCell.</param>
        /// <param name="clipBounds">A Rectangle that represents the area of the DataGridView that needs to be repainted.</param>
        /// <param name="cellBounds">A Rectangle that contains the bounds of the DataGridViewCell that is being painted.</param>
        /// <param name="rowIndex">The row index of the cell that is being painted.</param>
        /// <param name="cellState">A bitwise combination of DataGridViewElementStates values that specifies the state of the cell.</param>
        /// <param name="value">The data of the DataGridViewCell that is being painted.</param>
        /// <param name="formattedValue">The formatted data of the DataGridViewCell that is being painted.</param>
        /// <param name="errorText">An error message that is associated with the cell.</param>
        /// <param name="cellStyle">A DataGridViewCellStyle that contains formatting and style information about the cell.</param>
        /// <param name="advancedBorderStyle">A DataGridViewAdvancedBorderStyle that contains border styles for the cell that is being painted.</param>
        /// <param name="paintParts">A bitwise combination of the DataGridViewPaintParts values that specifies which parts of the cell need to be painted.</param>
        protected override void Paint(
            Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, 
            int rowIndex, DataGridViewElementStates cellState, 
            object value, object formattedValue, string errorText, 
            DataGridViewCellStyle cellStyle, 
            DataGridViewAdvancedBorderStyle advancedBorderStyle, 
            DataGridViewPaintParts paintParts)
        {
            //von mir eingefügt um den gefiltertetn hintergrund zu visualisieren
            if (this.currentColumnFilter != "")
            {
                cellStyle.BackColor = Color.DimGray;
                cellStyle.ForeColor = Color.White;
            }
            // Use the base method to paint the default appearance. 
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, 
                cellState, value, formattedValue, 
                errorText, cellStyle, advancedBorderStyle, paintParts);

            // Continue only if filtering is enabled and ContentBackground is 
            // part of the paint request. 

Gruß

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

ok ich habe es hinbekommen mit der spaltenaufteilung,
ich hab in meiner dGvexcel_initialisieren() Methode die Funktion:

 dGvexcel.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
eingebaut, da mir gesagt wurde, dass "AutoSizeColumns" sich nicht auf die vorgegebene Breite meines DGV´s bezeieht, sondern sich auf den Inhalt der Spalten bezieht und jede Spalte so breit wie der längste Eintrag in der Spalte macht.

Thema: Gefilterte Spalte oder Header im DataGridView farbig hinterlegen
Am im Forum: GUI: Windows-Forms

jetzt noch eine kurze Frage,
wenn ich nun eine Spalte filtere, dann meinetwegen nochmal nach einer filtere
wie kann ich die entsprechende headerzelle oder auch die gefilterte spalte farbig hinterlegen?
Google meinte dass man in der Paint Methode der DGVAutoFilterHeaderCells.cs bearbeiten etwas mit BackColor hinzufügen muss, wenn ich das mache passiert aber nichts, obwohl ich EnableHeadersVisualStyle auf false gesetzt habe.

In die Klasse habe ich eine if schleife eingefügt:

 protected override void Paint(
            Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, 
            int rowIndex, DataGridViewElementStates cellState, 
            object value, object formattedValue, string errorText, 
            DataGridViewCellStyle cellStyle, 
            DataGridViewAdvancedBorderStyle advancedBorderStyle, 
            DataGridViewPaintParts paintParts)
        {
            //von mir eingefügt um den gefiltertetn hintergrund zu visualisieren
            if (this.filtered)
            {
                cellStyle.BackColor = Color.Brown;
            }
            // Use the base method to paint the default appearance.

                base.Paint(graphics, clipBounds, cellBounds, rowIndex,
                    cellState, value, formattedValue,
                    errorText, cellStyle, advancedBorderStyle, paintParts);

Muss ich da aus meiner Form1.cs noch was einfügen
wie das beim einfügen des AutoFilter?

dGvexcel.BindingContextChanged += new EventHandler(dGvexcel_BindingContextChanged);

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 es nun geschafft, dass sich das DGV mit dem OLEDB füllen läßt und der Filter geht nun auch.
Meine Füllen Funktion:

        public void dgv_fuellen()
        {
            
            try
            {
                var excelFile = verbindung_zu_definitionen.getPfad();
                var hdr = "Yes";                    //hasHeaders ? "Yes" : "No";
                var binding_excel = new BindingSource();
                string connectionString;
                //Prüfen welches Excel OLEDB geladen werden soll
                if (excelFile.Substring(excelFile.LastIndexOf('.')).ToLower() == ".xlsx")
                    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile +
                                ";Extended Properties=\"Excel 12.0 Macro;HDR=" + hdr + ";IMEX=1\"";
                else
                    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + ";Extended Properties=\"Excel 8.0;HDR=" + hdr +
                                    ";IMEX=1\"";

                //Alle Spalten von Tabelle1 lesen
                var adapter = new OleDbDataAdapter("SELECT * FROM [CM$]", connectionString);
                //Verbindung zur Tabelle aufbauen
                var ds = new DataSet();
                //Zu lesende Tabelle angeben
                adapter.Fill(ds, "CM");
                //Tabelle auswählen
                dt_filter = ds.Tables["CM"];
                //Binden da DataGridViewAutoFilter nur mit einem Binding arbeiten
                binding_excel.DataSource = dt_filter;
                //Mit DGV verknüpfen
                dGvexcel.DataSource = binding_excel;//dt_filter;        //Daten mit dem DGV verknüpfen
            }
            catch (Exception fehler_fuellen)
            {
                MessageBox.Show("Die Daten konnten nicht geladen werden, folgendes Problem trat auf:\n" + fehler_fuellen + "\n sollte das Problem weiterhin bestehen, \n" +
                                "wenden sie sich an:\n [email protected]", "Datenfehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //nicht benötigte Spalten ausblenden
            dGvexcel.Columns["Angebot"].Visible = false;
            dGvexcel.Columns["Auftrags Nr"].Visible = false;
            dGvexcel.Columns["erledigt"].Visible = false;
            dGvexcel.Columns["Beschreibung"].Visible = false;

            dGvexcel.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

        }//Ende DGV füllen neu


Teile aus meiner Form_Load Funktion:

            //Versuch Excel in Form mit DataGridView und DGVAutoFilter
                dGvexcel.BindingContextChanged += new EventHandler(dGvexcel_BindingContextChanged);

                dGvexcel_initialisieren();
                dgv_fuellen();

Die BindingContextChange Funktion in meine Hauptklasse Form1:


        private void dGvexcel_BindingContextChanged(object sender, EventArgs e)
        {
            if (dGvexcel.DataSource == null) return;

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

und ganz wichtig war anscheinend die Rückstzefunktion meines DGV´s:

        public void dgvclear()
        {
            var dgvtable = (dGvexcel.DataSource as BindingSource).DataSource as System.Data.DataTable;
            dgvtable.Rows.Clear();
            
            
        }

Jetzt will ich noch versuchen die Spaltenbreite an mein DGV anzupassen, irgendwie geht das mit dem

dGvexcel.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
nicht richtig.
Ah und den Header farbig markieren wenn in dieser Spalte gefiltert wurde...

Vielleicht weiß einer ja noch Rat, ansonsten versuch ich mein Glück und melde mich wieder :D

Danke nochmal an alle.

Gruß

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

ok danke TH69
habe es eingefügt, nun ist mir aber aufgefallen,
dass er in der Funktion


        public static DataSet GetExcelDataSet(string excelFile, bool hasHeaders)

nach dem for schleifen einstieg

foreach (DataRow schemaRow in schemaTable.Rows)
                    {
                        var tableName = schemaRow["CM"].ToString();

gar nicht mehr weiter macht, sondern mein UI aufruft und dann kann ich es normal bedienen (wie davor ohne die AutoGrid DropDownbuttons im Header des DGV´s)
Ich geh dem mal auf den Grund und melde mich wieder, falls ich nicht weiter komme.

Ausser es sieht ein Profi auf anhieb :)


Gruß

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

Hallo,

also ich komm nicht weiter mit den ganzen bindings und sources.

In meine Form1_Load habe ich versucht die BindingDinger einzufügen:


....
            //Versuch Excel in Form mit DataGridView

                binding_excel = new BindingSource();

                dGvexcel_initialisieren();
                dgv_fuellen();

                
                binding_excel.DataSource = GetExcelDataSet(verbindung_zu_definitionen.getPfad(), true);
                dGvexcel.DataSource = binding_excel;

        }



In die Funktion

dGvexcel_initialisieren();
habe ich den Handler eingebaut:

            dGvexcel.BindingContextChanged += new EventHandler(dGvexcel_BindingContextChanged);
mit diesem sollen ja die DropdownButtons in mein GridView Header reinkommen.

private void dGvexcel_BindingContextChanged(object sender, EventArgs e)
        {
            if (dGvexcel.DataSource == null) return;

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

Meine GetDataSet Methode habe ich versucht nach deinem Tip (vbprogger) mit dem OLEDB

die sieht dann so aus:

 public static DataSet GetExcelDataSet(string excelFile, bool hasHeaders)
        {
            var hdr = hasHeaders ? "Yes" : "No";
            string strConn;
            if (excelFile.Substring(excelFile.LastIndexOf('.')).ToLower() == ".xlsx")
                strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile +
                          ";Extended Properties=\"Excel 12.0 Macro;HDR=" + hdr + ";IMEX=1\"";
            else
                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + ";Extended Properties=\"Excel 8.0;HDR=" + hdr +
                          ";IMEX=1\"";

            var output = new DataSet();

            using (var conn = new OleDbConnection(strConn))
            {
                conn.Open();

                var schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

                if (schemaTable != null)
                    foreach (DataRow schemaRow in schemaTable.Rows)
                    {
                        var tableName = schemaRow["CM"].ToString();

                        if (tableName.LastIndexOf("'", StringComparison.Ordinal) < tableName.Length - 1)
                            continue;
                        try
                        {
                            var cmd = new OleDbCommand("SELECT * FROM [" + tableName + "]", conn) { CommandType = CommandType.Text };
                            var outputTable = new System.Data.DataTable(tableName);
                            new OleDbDataAdapter(cmd).Fill(outputTable);
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message + "Sheet:" + tableName + ".File:" + excelFile, ex);
                        }
                    }

                conn.Close();
            }
            return output;
        }

Irgendwie will das alles nicht so wie es sein soll.
Und so einfach wie es in den Foren steht ist das auch nicht...

vlt. kann mir einer noch n Tip geben ...

Danke.

Gruß