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 inva
Thema: Symbolleiste durch Button erweitern (Office Word 2010)
Am im Forum: Office-Technologien

Also ich habe eine Antwort gefunden:

Zitat
The reasoning behind this design decision is that Microsoft wants users to always know when a command is not a built-in command (comes from a third-party), what application (add-in) is providing it, and how that application can be disabled. This is because of negative experiences in earlier versions of Word with some third-party Add-ins that caused frequent problems, for which Microsoft was always blamed.

Social MSDN Post
Zitat
As an end-user, yes. As part of your Add-in solution, no.


Social MSDN Post

Thema: Symbolleiste durch Button erweitern (Office Word 2010)
Am im Forum: Office-Technologien

Gibt es auch eine Möglichkeit das direkt von der AddIn (also ausgehend von der Application) Ebene aus zu steuern?
Ich möchte eigentlich kein Ribbon einfügen.

Thema: Symbolleiste durch Button erweitern (Office Word 2010)
Am im Forum: Office-Technologien

Liebe Community,
Nach Stunden des Probierens und suchens komme ich nicht mehr weiter und brauche eure Hifle!

Ich möchte gern die Symbolleiste durch ein Word 2010 AddIn um einen Button erweitern.

Ich habe bisher folgendes versucht:


Office.CommandBars cmdBars = Globals.PTPTWordAddIn.Application.CommandBars.ActiveMenuBar;
			
			Office.CommandBar Toolbar = cmdBars.Add("NewToolBar", Office.MsoBarPosition.msoBarTop, false, true);

			firstButton = (Office.CommandBarButton)Toolbar.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, missing);
			firstButton.Style = Office.MsoButtonStyle.msoButtonCaption;
			firstButton.Caption = "Test";
			firstButton.Tag = "TestButton";
			firstButton.FaceId = 123;
			firstButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(FirstButtonClick);

... leider wurde hierdurch nur eine neue Gruppe, welche den Button enthält unter einem Ribbon hinzugefügt.

Mein Ziel wäre es aber, die Symbolleiste ganz oben rechts, die die Buttons wie Z.B Speichern enthält, zu erweitern.

Ich bin fest davon überzeugt das es gehen muss, schließlich lassen sich diese ja auch manuell hinzufügen, aber ich habe noch keinen programatischen Ansatz gefunden bzw. gehen mir so langsam auch die Stichworte nach denen ich suchen könnte aus.

Hat jemand eine Idee?

Thema: Speicherverbrauch explodiert beim Laden von Bildern
Am im Forum: Grafik und Sound

Zitat von gfoidl
der Explorer zeigt ja als Miniaturansicht nicht das Originalbild sondern ein Thumbnail-Image davon an (also ein kleines Bild). Daher auch die versteckte thumbs.db Datei indem Ordner wo diese gecached werden.

D.h. dann doch aber, dass ich, wenn ich nur genügend Bilder in einem Ordner habe, auch im Explorer eine OutOfMemoryException produzieren könnte?

Vielen Dank an euch!
Die Idee bzgl. der Thumbnails werde ich aufgreifen. Ich dachte ich mache eventuell generell etwas falsch oder es gibt einen effizienteren Weg - aber eigentlich hätte ich da auch selber drauf kommen können. Nichts desto trotz, vielen Dank! :)

Thema: Speicherverbrauch explodiert beim Laden von Bildern
Am im Forum: Grafik und Sound

2 GB könnten auch vorkommen - im ersten Fall könnte ich eventuelle Referenzen wieder freigeben und bei Bedarf neu allokieren.

Aber, was ich mich frage, wie macht es der Windows Explorer? Er verfügt ja auch über eine Miniaturansicht, und selbst wenn x-beliebig viele Bilder in einem Ordner sind, zeigt er brav alle an, er lädt sie zwar erst in dem Moment, wenn ich sie scrolle, aber einmal geladen sind sie persistent in der Miniaturansicht. Ich wollte prinzipiell das gleiche Verhalten wie die Windows Explorer Miniaturansicht implementieren (aber erstmal ohne das Laden bei Bedarf).

Thema: Speicherverbrauch explodiert beim Laden von Bildern
Am im Forum: Grafik und Sound

Zitat von JAck30lena
Wieviel in MB sind denn alle Bilder zusammen, die du laden willst?

Es können schon (weit) über 100 MB zusammen sein.

Thema: Speicherverbrauch explodiert beim Laden von Bildern
Am im Forum: Grafik und Sound

Zitat von Taipi88
Hi,
zuerstmal: Dein Bild ist zu groß. Speicher und lad es entsprechend der in der ImageList gespeicherten Größe - das dürfte ein wenig helfen.

Danke, ich werde mir dann wohl eine kleine Thumbnail Methode Stricken, oder gibt es im.NET Framework bereits eine Methode die diese Funktion implementiert?
Zitat von JAck30lena
Vorab eine Frage: diesen "Anstieg" hast du im Taskmanager beobachtet?

Jep - ist das nicht aussagekräftig genug? Mein Problem ist, dass ich diesen Aufruf für mehrere Bilder in einer Schleife mache. Das führt dann irgendwann dazu, dass ich von genau dieser Stelle eine OutOfMemoryException geworfen bekomme.

Ich kann mir nicht so recht vorstellen, warum die ImageList sich Kopien erstellen sollte, aber nichts desto trotz. Gebe ich das Image Objekt explizit mit Dispose() wieder frei erscheinen die Bilder auch nicht mehr in der ImageList.
Der Speicherverbrauch steigt auch nicht beim Zuweisen des Image Objekts an de ImageList so stark an, sondern beim Aufruf von Image.FromFile(...).

Thema: Speicherverbrauch explodiert beim Laden von Bildern
Am im Forum: Grafik und Sound

Hallo Community,
Ich möchte gern ein ListView mit einer ImageList erstellen und diese anzeigen.
Jedoch habe ich dabei das Problem, dass der Speicherverbrauch (RAM) bereits bei einem geladenem Bild (~3MB) auf 53 MB (vor dem Laden: 17MB) steigt.

Anbei mein Code:


private void AddImage(string sFilePath)
        {
            Image newImage = Image.FromFile(sFilePath);// Viele Bilder: OutOfMemory Exception
            newImage.Tag = GetFileNameFromPath(sFilePath);

            imageList.Images.Add(newImage.Tag.ToString(), newImage);
            lPathsOfImagesToScale.Add(sFilePath);

            ListViewItem currentItem = new ListViewItem(sFilePath);
            currentItem.ImageIndex = imageList.Images.Count - 1;
            ctrlImagePreviewBox.Items.Add(currentItem);

            newImage = null;
        }

Der Speicherverbrauch schnellt an der Stelle


Image newImage = Image.FromFile(sFilePath);

wie oben beschrieben in die Höhe.

Bzgl. "Bildverarbeitung" bin ich leider noch ein absoluter Anfänger und ich habe das Laden der Bilder auf die einfachste Art und Weise implementiert und möchte es gern optimieren.
Leider weiß ich nicht, wie optimierbar der Code noch ist, da ich das Bild ja nicht irgendwann wieder freigebe, sondern ein Verweis darauf stetig in der ImageList hinterlegt ist.

Ideen? Vorschläge?

Thema: Bild verkleinern - Ergebnis bleibt schwarz
Am im Forum: Grafik und Sound

... alles Klar. DrawImage zeichnet in den aktuellen Graphics kontext. Das macht natürlich sinn.

Danke!

Thema: Bild verkleinern - Ergebnis bleibt schwarz
Am im Forum: Grafik und Sound

scheinbar nirgendswo, sonst wärs ja nicht schwarz, aber damit hilfst du mir nicht weiter.
Wenn ich das original Bild nehme (input), dann bringt das DrawImage gar nichts, das Bild ist immernoch genauso groß wie vorher. Also dachte ich, ich müßte ein neues erstellen und mein Graphics Objekt zeichnet dann dessen Inhalt in das angegebene Bild.

Scheinbar nicht.

Thema: Bild verkleinern - Ergebnis bleibt schwarz
Am im Forum: Grafik und Sound

hallo,
Ich möchte gern ein Bild verkleiner und abspeichern.

Hierfür verwende ich folgenden Code:


//scale image proportional
        public static Image Resize(Image originalImage, double newWidth_p)
        {
            double dlFaktor = newWidth_p / originalImage.Width;
            double newHeight = dlFaktor * originalImage.Height;
            double newWidth = dlFaktor * originalImage.Width;

            Graphics newGraphics = Graphics.FromImage(originalImage);
            newGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;

            Bitmap resizedImage = new Bitmap((int)newWidth, (int)newHeight);
            Rectangle DrawingArea = new Rectangle(0, 0, (int)newWidth, (int)newHeight);
            newGraphics.DrawImage(resizedImage, DrawingArea);

            return resizedImage;
        }

Jedoch ist das ouput Bild komplett Schwarz.
Mache ich generell etwas falsch?

Der Aufruf sieht wie folgt aus:



private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenMyFiles = new OpenFileDialog();
            if (OpenMyFiles.ShowDialog() == DialogResult.OK)
            {
                Image currentImage = Image.FromFile(OpenMyFiles.FileName);
               
                Image resizedImage = ImageScale.Resize(currentImage, 480);

                resizedImage.Save(@"C:\Dokumente und Einstellungen\user1\Desktop\test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        
        }

Thema: DataGridView: Cell click auf "halbe" Zeile
Am im Forum: GUI: Windows-Forms

Hi,
Also wenn ich es debugge, wird die OnCellClick Methode selbst beim Klick auf RowHeaders aufgerufen, undzwar sogar noch vor der OnRowHeaderMouseClick Methode.

Wie gesagt, das Problem besteht nur, bei "halben" rows (siehe Bild unten).
Klicke ich hier auf den RowHeader, wird weder das OnCellClick noch das OnRowHeaderMouseClick event aufgerufen.

Das ist meine ich mit einer halben Zeile (rot eingerahmt):
siehe Anhang

Thema: DataGridView: Cell click auf "halbe" Zeile
Am im Forum: GUI: Windows-Forms

hey!
Danke für deine Post, aber leider springt er in dem beschriebenem Fall gar nicht in den Eventhandler hinein :(
Sobald ich auf eine untere Zeile klicke, die nur halb da ist, tut das nicht mehr, ist das vielleicht ein Bug des DataGridView's?

Thema: DataGridView: Cell click auf "halbe" Zeile
Am im Forum: GUI: Windows-Forms

Hallo liebe Community,

Ich hänge zur Zeit bei einem Problem in meinem DataGridView.

Ausgangssituation:
Ich habe ein eigenes DataGridView control erzeugt, indem ich von der Klasse DataGridView erbe und diverse Methoden/Events überschreibe.
So auch getan mit dem OnCellClick() Event in dessen Behandlungsroutine eigener Code ausgeführt werden soll. Zudem habe ich die "graue" Spalte in der der schwarze Pfeil angezeigt wird eingeblendet.

Ist das DataGridView nun soweit gefüllt, dass die Scrollbars eingeblendet werden, entstehen am unteren Rand "halbe" Zeilen. Also Zeilen die nicht mehr ganz angezeigt werden können und demnach nur noch halb erscheinen.

Nun folgendes Problem:
Klicke ich in solch eine halbe Zeile, wird der Code in meiner überschriebene OnCellClick() Behandlungsroutine ausgeführt. Klicke ich jedoch auf die "graue" Spalte vor der Zeile, wird die Behandlungsmethode nicht aufgerufen (funktioniert aber sonst in allen anderen Zeilen, also allen, die nicht "halb" angezeigt werden). Bei solch einem Klick, wird die OnCellClick() Behandlungsmethode auch gar nicht aufgerufen, bzw. wird zu keinem gesetzten Breakpoint gesprungen.

Ist dies ein Bug, oder gibt es die Möglichkeit noch irgendein Property zu setzen, welches Klicks auf die graue Spalte gleich Klicks auf Zellen im Grid behandelt, oder benutze ich das falsche Event?

Ich würde das Problem gerne lösen, eine Alternative wäre jedoch die graue Spalte auszublenden.

Grüße,
inva

Thema: Rechteproblem: Logfile's, Lizenzdateien - Benutzerdaten oder Anwendungsdaten
Am im Forum: Rund um die Programmierung

Hey,
Danke für die Info's!
Über die ACLs bin ich auch schon gestolpert, leider hats bisher nicht geklappt, die Ordner-Berechtigungen während der Installationsroutine zu setzen.

Ich werds mir nochmal anschauen. Aber danke für die Tipps, Info's und den Link.

Grüße,
inva

Thema: Rechteproblem: Logfile's, Lizenzdateien - Benutzerdaten oder Anwendungsdaten
Am im Forum: Rund um die Programmierung

Hey liebe Community,
Aufgrund eingeschränkter Benutzerkonten und Vistakompatibilität, wollen wir die Logfiles und Lizenzdateien für unsere Software, im best case Anwendungsbezogen, im CommonAppDataPath ablegen (AllUsers\Anwendungsdaten).
Soweit so gut!

Leider kommen uns hier die Schreibrechte der unterschiedlichen Windowsbenutzer ind ie Quere. Da wir gerne Anwendungsdaten auch gern für alle Benutzer zur Verfügung stellen würden (Logfile, Lizenzdateien).
Was meiner Meinung nach auch Sinn macht, da nicht jeder Nutzer die Software neu Lizenzsieren soll!
Folgendes Szenario: Benutzer A startet die Software, logfile wird angelegt. Benutzer A meldet sich ab. Benutzer B meldet sich an und startet ebenfalls die Software, nun kann er aber nicht ins logfile schreiben, da er für diese Datei keine Schreibrechte besitzt, weil er nicht Ersteller/Eigentümer dieser Datei ist.
Bei der Lizenz existiert folgendes Problem, Admin installiert Software, bekommt 30 Tage Testlizenz. Nach den 30 Tagen wird eine unbeschränkte Lizenz bestellt und eingefügt. Wird dies durch einen normalen Benutzer getätig, kann die alte Lizenzdatei nicht überschrieben werden.

Es ärgert mich ein wenig, dass ich über die Problematik Anwendungsbezogener kaum gute und aussagekräftige Dokumentation finde. Zwar sagen alle Dokumente, Dateien sollen ins CommonAppData geschrieben werden, aber keine erwähnt, dass die Daten trotzdem mit den rechten des erstellenden Benutzers verknüpft sind. Wodurch natürlich nur er, das logfile schreiben könnte.
Dafür muss es doch eine offizielle Richtlinie geben, oder?!
Das ist doch ein normaler Fall bei Software Entwicklungen. ich wäre enttäusacht, wenn es nur über einen kleinen hack funktioniert indem man bei der Installation die Ordner im Anwendungsdatenverzeichnis schon erstellt und die Rechte explizit manuell setzen muss um allen den Zugriff zu ermöglichen.

Grüße,
inva

Thema: Konfigurationsmodell: Änderbare Anwendungslevel-Settings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hey herbivore,
Also bei mir geht das Attachment nicht ... Aber das könnte auch an unserer super tollen firewall im Betrieb liegen. Ich versuch es später von zu Hause einfach nochmal.

Danke für die Antworten.

Thema: Konfigurationsmodell: Änderbare Anwendungslevel-Settings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hey Joetempes,
Danke für dein Kommentar.
Leider ist das Attachment in dem Post hinter dem Link von dir, nicht mehr verfügbar.

Grüße,
inva

Thema: Konfigurationsmodell: Änderbare Anwendungslevel-Settings
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Liebe Community,
Ich habe mich bereits mit dem Artikel [Tutorial] Das neue Konfigurationsmodell im .NET Framework 2.0 einsetzen. beschäftigt.
Aber ich habe leider eine etwas verzwickte Anforderung.
Ich habe eine App, die gewisse "Einstellungen" (Inhalte aus Textboxen) des Benutzers speichern und beim Neustart der App wiederherstellen soll.
Nun sollen die Einstellungen aber Anwendungsbezogen und nicht Nutzerbezogen sein. Sprich, jeder Nutzer soll beim App start, die selben Einstellungen zu sehen bekommen (bzw. die, die der vorherige auch hatte) und diese aber ebenfalls ändern/anpassen können. Nun habe ich es aber so verstanden, nicht in die app.config aus der App heraus schreiben zu können.
Ich möchte gern das neue Konfigurationsmodell verwenden und keine proprietäre Lösung bauen, mit der ich eventuell Probleme bzgl. Zugriffsrechte z.B. unter Vista bekommen würde.

*edit*
Ich habe zudem z.Z. noch eine log-datei die ich ins exe-Verzeichnis schreibe ...

Oder ist dies so gar nicht möglich?

Thema: Applikation stürzt bei start ab
Am im Forum: Rund um die Programmierung

Hey Community!
Danke für die flotten Antworten und Ideen.

Aber ich habs eben selbst rausgefunden. Meine Config-Klasse hat mich ein wenig geärgert, bzw. wenn in der user config nix drinne steht, sind die dafür passenden Member eben auch leer und wenn man bei denen dann .ToString() aufruft, knallts.
Fehler behoben und Prüfung eingebaut :)

Danke für eure Unterstützung!

Thema: Applikation stürzt bei start ab
Am im Forum: Rund um die Programmierung

Hallo liebe Community,
Wie im Titel kurz beschrieben, habe ich eine Applikation die beim Start abschmiert.
Dies tut sie kurioserweise nur auf anderen Rechner und wenn ich dessen kompilierte (release version) .exe auf dem Entwicklungsrechner starte.

Beim Starten aus dem Studio heraus (Release & Debug) gibt es keine Probleme.

Bevor die App bei mir lokal abschmiert, kommt ein hübsches Just-In-Time Debugger Fenster, welcher sich aber nicht an den Prozess dranhängen kann. Zudem sagt dieses Fenster noch, dass eine Null-Referenced Exception aufgetreten sei. Die ich leider nicht nach voll ziehen kann.

Habt ihr Ideen oder hattet ihr schon einmal ähnliche Probleme?

Grüße,
inva

Thema: Prozess ID des Aufrufenden Prozess' ermitteln.
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

vielen lieben Dank Spooky!

Thema: Prozess ID des Aufrufenden Prozess' ermitteln.
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo liebe Community!
Folgender Umstand plagt mich ein wenig:
Ich habe eine Consolen App, die von einem anderen Prozess angestoßen werden soll.
Nun möchte ich aber gern, dass diese, meine, Console App in das Consolen Fenster der aufrufenden oder ggf. sogar in ein eigenes Consolen Fenster schreibt.

Daher wäre meine Frage
a) Gibt es eine Möglichkeit die Prozess-ID des Callers zu ermitteln?
b) Kann ich es erzwingen, dass meine App, ein eigenes Consolen Fenster öffnet?


Grüße,
inva

*edit*

achja, wenn man zu faul ist selber fix zu gucken.

Die Lösung für b), die bevorzugt war hab ich!

So geht's:


[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool FreeConsole();

[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool AllocConsole();

static void Main(string[] args)
{
    /* do something here
        ...
        ...
        ...
   */
   AllocConsole();

   Console.WriteLine("something");
   // wait for input
   Console.ReadLine();

   FreeConsole();
}

Thema: DataGridView: Child-Control des DGVs ruckelt beim Scrollen
Am im Forum: GUI: Windows-Forms

Guten Morgen Norman-Timo!

Also, deine Idee habe ich soweit verstanden. Aber nun ist mein 2. controll ja "blöderweise" ein 'echtes' controll und ich möchte ja auch mehr als einfach nur ein Rechteck malen, sondern auch den Inhalt des 2. controlls anzeigen.
Wie in meinem Beispiel gezeigt ist das 2. Controll auch ein DataGridView, ebenfalls ein eigenes abgeleitetes.

Dein Code-Beispiel brachte mich auf folgende Idee:
- ich überschreibe die OnPaint des 2. controlls und merke mir dessen graphics objekt
- das gemerkte graphics objekt und zeichne es im überschriebenen OnPaint() meines DataGridViews
-> will ich das jedoch machen, bekomme ich eine OutOfMemory Exception beim scrollen (wenn also die position des 2. controlls verändert werden soll)

hier der Code (OnPaint() des DGVs):


protected override void OnPaint(PaintEventArgs e)
{
    // let the base do its paint
    base.OnPaint(e);
    // now draw the details grid over the main grid
    if (refToDetailsGrid.PaintEventArgs != null)
    {
        refToDetailsGrid.PaintEventArgs.Graphics.DrawRectangle(new Pen(Color.Black, 1), refToDetailsGrid.PaintEventArgs.ClipRectangle);
    }
}

Also ich kann mir schon denken, dass es dort kracht, aber ich weiß nicht was ich dagegen tuen soll. Vorallem, zeichnet mir DrawRectangle doch auch nur ein Rechteck und nicht die ganze Grafik. Da aber mein 2. DGV (2. controll) auch child-controlls hat (Scrollbar, rows ...) bin ich doch zwingend an die base.OnPaint() des 2. DGVs angewiesen, damit dies korrekt gezeichnet wird, oder?
Falls dies so richtig ist, bedeutet das doch, dass es nicht möglich ist beide controlls gleichzeitig zu zeichnen?!

Aber noch eine Alternative dazu, wobei die bisher nur als Idee existiert aber die Umsetzung noch fehlt bzw. das "wie" ichs umsetzen kann.
Undzwar: ich kann doch die controlls stink normal via OnPaint() zeichnen lassen unterdrücke aber den Refresh zum Bildschirm solange bis beide OnPaint's abgearbeitet sind, refreshe den Bildschirm und für den Nutzer sieht es zumindest so aus, als werden sie gleichzeitig gezeichnet. Oder ist dies so nicht realisierbar?

Grüße und ein großes Dankeschön für deine bisherige Mühe!

inva

Thema: DataGridView: Child-Control des DGVs ruckelt beim Scrollen
Am im Forum: GUI: Windows-Forms

Hey Norman-Timo,
Ich habe das schonmal so ausprobiert, aber, dann habe ich doch nur das Graphics object von DGV, in dem ist doch das 2. controll gar nicht enthalten.
Also, wenn ich es wie folgt mache.

OnPaint() des abgeleiteten DGVs überschreiben
PaintMe() des 2. Controlls aufrufen mit PaintEventArgs von OnPaint() als Parameter
OnPaint() des 2. Controlls aufrufen mit PaintEventArgs aus PaintMe() [also PaintEventArgs aus DGV]
Dann habe ich trotzdem den "schlieren-Effekt" und die stelle an der das Controll ist ist grau.

anbei mein Code


// 1. Controll (DGV)
class CMainDataGridView : DataGridView
    {
        private CDetailsDataGridView refToDetailsGrid;
        public CDetailsDataGridView DetailsGrid
        {
            set { refToDetailsGrid = value; }
            get { return refToDetailsGrid; }
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            // call Paint from details DGV
            refToDetailsGrid.PaintMe(e);

            // at last, call the base OnPaint()
            base.OnPaint(e);
        }
    }

// 2. controll (auch DGV)
class CDetailsDataGridView : DataGridView
    {
        private PaintEventArgs Helper;
        public void PaintMe(PaintEventArgs e)
        {
            Helper = e;
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(Helper);
        }
    }

Thema: DataGridView: Child-Control des DGVs ruckelt beim Scrollen
Am im Forum: GUI: Windows-Forms

Hallo Norman-Timo,
Danke für deinen Post! Deine Idee klingt logisch und gut.
Aber ich bin leider nicht allzu fit in GDI Geschichten.
Daher frage ich mich, wie ich das "selbst zeichnen" im Code umsetze.
Muss ich mir dafür das Graphics object des 2. controlls besorgen und rufe dessen .Draw...() auf ?!

Wie ich die zu überschreibene OnPaint() zu realisieren habe ist mir klar, denke ich.
Aber um Missverständnisse zu vermeiden, ein kurzes Snippet:

OnPaint() vom DGV:


protected override void OnPaint(PaintEventArgs e)
{
     // call Paint from second control           
     myControll.Paint(e);

     base.OnPaint(e);
}

... wie müßte nun die Paint() im 2. controll aussehen?! Mir fehlen hierfür leider jegliche Vorstellungen, da ich mich bisher nicht/wenig mit Oberflächen und der Paint-"Struktur" von Windows beschäftigt habe.

Thema: DataGridView: Child-Control des DGVs ruckelt beim Scrollen
Am im Forum: GUI: Windows-Forms

Hallo Liebe Community,
Kurz die Vorgeschichte:
Ich habe ein DataGridView im Hintergrund. Hier werden, wer hätte es gedacht, Daten angezeigt. Nun habe ich über dem DataGridView ein 2. controll eingeblendet, welches als das DataGridView iim Hintergrund als Parent hat. Das 2. controll hat eine "fixe" position im DataGridView, es soll sich also beim scrollen mit hoch oder runter bewegen.
Das funktioniert auch alles soweit.
Nun habe ich aber folgendes Problem. Beim Scrollen zieht nun das 2. controll nach. Es bewegt sich also nicht flüßig wie das unterliegende DataGridView sondern bewegt sich recht hackend/ruckelig und zieht einfach nach.
Die Ursache ist wohl folgende: Beide controlls werden zu unterschiedlichen Zeiten gezeichnet, was eben zur Folge hat, dass das 2. controll später gezeichnet wird, wodurch dieser "nach ziehen" Effekt entsteht.
Eine Idee wäre, das DataGridView-Controll ab zu leiten um ein eigenes Controll zu erstellen und dessen OnPaint() methode zu überschreiben um in dieser beide Controlls zu zeichnen. Nun weiß ich aber nicht so recht wie ich das anstellen soll.

Ist meine die Idee überhaupt erfolg versprechend oder ist der Ansatz schon falsch?
prinzipiell quält mich hier zu auch noch die Frage, ob es überhaupt möglich ist 2 controlls gleichzeitig zu zeichnen bzw. zumindest, gleichzeitig auf dem Bildschirm zu aktualisieren, sodass es für den Benutzer gleichzeitig aussieht.

Grüße,
inva

Thema: threading multiple locks()
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Gute Morgen, Danke euch zwei für die hilfreiche Antwort!

Die Idee, den Dateizugriff in einer extra Methode zu kapseln hatte ich auch schon. Wollte aber erst einmal abwarten, was hier für Reaktionen kommen.

Der Vorschlag von herbivore klingt ganz gut, ich denk ich probiere es einmal damit.


Nochmals, besten Dank für die Reaktionen und Ideen!

Liebe Grüße,
inva

Thema: threading multiple locks()
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo liebe Community,
eine kurze Frage.
Nachdem es in C# nicht möglich ist Defaultparameter für Funktionen zu definieren, muss man die gewünschte Funktion überladen.
Ich habe eine Logging Klasse, in welcher, natürlich, ein Dateizugriff stattfindet.
Dieser ist jedoch innerhalb des locks. Nun soll diese funktionalität natürlich eine beide Methoden. Jedoch greifen beide Methoden auf die selbe log Datei zu, daher meine Frage, ob folgender Code möglich ist und einen doppelter Zugriff auf die log datei dadurch verhindert wird. Da ich mir unsicher bin ob es so Möglich ist, wie ich es mir vorstelle.

Vielen Dank im Vorraus für euer Feedback.


private static Object thisLock = new Object();

public static void Add(string strNew, bool bError)
{
     // lock the code segment below to avoid multiple access to the Logfile
     lock (thisLock)
     {
           .
           .
           .  
     }
}


public static void Add(string strNew)
{
     // lock the code segment below to avoid multiple access to the Logfile
     lock (thisLock)
     {
           .
           .
           .  
     }
}

MfG
inva

Thema: OpenFileDialog & Dateipfad
Am im Forum: GUI: Windows-Forms

Yep - genau das wars! Besten dank!