Laden...
Avatar #avatar-1925.gif
dataCore myCSharp.de - Member
SW-Entwickler Schweiz (VS) Dabei seit 22.05.2006 92 Beiträge
Benutzerbeschreibung

Forenbeiträge von dataCore Ingesamt 92 Beiträge

24.07.2012 - 21:46 Uhr

Gibt es da keine wissenschaftlich-logische Verhaltensweise?

Ich verwende nun (um mobile Rechner nicht abhängig vom direkten AD-Zugriff zu machen) die folgende Codezeile um seine Gruppenzugehörigkeit auszugeben. Jedoch mit demselben Problem (erst nach Logout/Login, natürlich mit AD-Zugriff, wird die Liste aktualisiert)


List<string> adGroupList = WindowsIdentity.GetCurrent().Groups.Translate(typeof(NTAccount)).Select(p => p.Value).ToList();

24.07.2012 - 17:27 Uhr

Gibt es eine Möglichkeit, die Gruppenzugehörigkeit ohne Logout zu aktualisieren? Oder führt kein Weg am Logout vorbei?

14.12.2010 - 15:10 Uhr

Umfeld:

  • Win7 64bit
  • VisualStudio 2008
  • Crystal Reports 10.5.3700.0

Salü zusammen,

Ich hab da mal folgende Frage und wäre froh, wenn mir da jemand helfen könnte:

Über "Design" - "Printer Setup" lässt sich für ein Formular (rpt) ein Zieldrucker auswählen. (siehe Dateianhang Printscreen). Laut MSDN erstellt man den Report dann für diesen Drucker beziehungsweise dessen Treiber.

Dieser Zieldrucker wird beim Erstellen eines neuen Formulars auf irgend einen, auf dem DeveloperPC installierten Drucker gesetzt und kann natürlich auch nur auf einen dort installierten Drucker gesetzt werden....

Zu meinen Fragen:

  • in wieweit kann die jeweilige Auswahl in diesem Dialog zu Problemen führen (Falls der User beispielsweise einen völlig anderen Drucker verwendet - was für mein Verständnis eh zu 99% eintreffen wird).
  • wäre es nicht sauberer, immer mit "No Printer" zu arbeiten und das DruckFormat programmatisch zu setzten?
ReportDocument reportDoc = new C6C5Report();
                        reportDoc.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
                        reportDoc.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperEnvelopeC65;
  • kennt jemand eine 'Best Practice' für diesen Fall?

Konkret habe ich das Problem, dass beim Client ein spezieller Couvert/Briefumschlag-Drucker steht der womöglich sogar krumme, alte Druckertreiber verwendet und bei dem mein CrystalReports Ausdruck nur irgendwelche Zeichen an irgendwelchen Positionen auf dem Brief druckt. Die Möglichkeit, mit meiner Developerkiste da vorbei zu gehen, den dortigen Druckertreiber zu installieren um diesen dann im Report fix einzugeben sehe ich als keine sinnvolle Lösung.

Danke im Voraus für etwaige Tipps...

07.05.2010 - 16:47 Uhr

Stellt sich halt die Grundfrage aus welchem "Guss" man seine Developerwerkzeuge bezieht...

Die Microsoft Ableger hatten in der Vergangenheit mit vielen Problemen zu tun (SourceSafe usw...) und hinken daher den kontrahenden hinterher.

Ich selber kenn (für die groben Sachen) leider nur die M$ welt mit MSTest, TFS, CI usw... mit der Konkurenz hab ich mich bisher (zu)wenig befasst. Einzig nUnit kenn ich.

07.05.2010 - 16:43 Uhr

Danke für die Infos 👍

Die 4 Sachen:* ASP.NET

  • Advanced Windows Communication Foundation (WCF) functionality
  • .NET Framework Data Provider for Oracle
  • MSBuild for compiling

brauchts auf dem Client wirklich nicht. Aber mich dünkt das Risiko zu gross das man plötzlich da irgendwo in ein Problem reinläuft nur weil man ein paar MB sparen will...

Andereseits, umso weniger Code, umso weniger potenzielle sicherheitslücken 🙂

grz und nochmals danke für obigen Link + Infos

06.05.2010 - 22:28 Uhr

Ich verstehe deine Frage nicht ganz. Du startest das Setup über die "Setup.msi"? Und willst nun den Zielort rausfinden? Wiejetzt?

Falls du das Ziel-Build-Verzeichnis des Setup Projekts meinst, schaue beim Builden unten im "Output" Fensterchen. Dort erscheint nach erfolgreichem Buildvorgang der Pfad. (Meist der Debug/Release Ordner des Setup Projekts)

06.05.2010 - 22:26 Uhr

Hatte gerade das Problem das aufgrund einer externen Assembly (in 4.0 full) nun alle meine Projekte auf 4.0 full statt 4.0 client profile umstellen musste.

Ich verstehe das MS Konzept dahinter nicht so ganz. Wie müssen wir Programmierer darauf reagieren? Wird mit dem VS Setup Projekt dann auch der Download der "Full" Framework Version automatisch veranlasst?

Ich denke heute ist das wohl nicht mehr ein allzugrosses Problem mit dem Speicherplatz?

06.05.2010 - 22:16 Uhr

Bin zurzeit am flott integrierten MSTest in Visual Studio 2010 ausprobieren (Benutzte bisher nUnit). Dabei bin ich auf folgendes Problem gestossen:

Lass ich mir ein Projekt über den Menupunkt "Test" generieren, werden alle TestMethod in der Liste aufgeführt.

Hab ich aber ein eigenes Projekt erstellt, zeigt es diese nicht als UnitTests an.

Übers VS Gui lässt sich das nicht einstellen. Man muss für jedes *.csproj, welches als UnitTest angezeigt werden soll, dies im favorisierten Texteditor öffnen und folgende Zeile in den Block "PropertyGroup" einfügen:


<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Hab eine weile gesucht - und falls jemand auf's selbe Problem stosst, sei ihm hoffentlich damit geholfen...

grz
dataCore

Stichwörter: MSTest, UnitTest, VS2010, Microsoft.VisualStudio.TestTools.UnitTesting

06.05.2010 - 22:10 Uhr

hier gibt es ne flotte übersicht:

NUnit vs. MsTest: NUnit wins for Unit Testing.

ich persönlich bin nUnit gewöhnt. Aber jetzt beschäftige ich mich mit VS2010 und dem flott integrierten MSTest. Dies ist auch gut mit TeamFoundation verknüpft (laut diversen web-Quellen) und genügt aktuell meinen Ansprüchen.

Aber nUnit hat wohl mehr "erfahrung" und ist halt auch openSource...

06.05.2010 - 22:06 Uhr

bin grad drauf gestossen - cool... THX!

20.11.2009 - 16:17 Uhr

Es gibt da was bei codeproject: http://www.codeproject.com/KB/WPF/WPF_NHibernate_Validator.aspx

Ausserdem hab ich erst letzthin (auch bei codeproject) eine vereinfachte, erweiterte Variante von obigem Artikel gesehen. Ich finde ihn aber nicht mehr 😦

hoffe dennoch obige links helfen dir 😃

07.10.2009 - 12:08 Uhr

Wenn du des direkt auf dem Exchange Server ausführst (mit nem Adminaccount) kannst du wie gewünscht alle Public Folder ausgeben.

Aber ich denke mir, du möchtest nicht ohne Grund von einem Client die PubFolders auslesen... da hab ich leider keine Lösung parat

03.08.2009 - 08:46 Uhr

Dankeschöön.

Hab auch bemerkt, dass sich meine Titelwahl hier gut als google suche anbietet. Vor Erstellung dieses Threads hatte ich eben wenig glück mit meiner suchanfrage.

Danke nochmals

31.07.2009 - 08:49 Uhr

Salü Leute,

Hab da mal eine, für viele sicher lustige Frage. Im Visual Studio im Bereich ASP.NET kann über zwei Wege ein ASP.NET Projekt lanciert werden:* File - New - Project - Web: ASP.NET Web Application

  • File - New - Website - ASP.NET Web Site

Dasselbe gilt ja auch für Silverlight Projekte. Mir ist aber nicht klar, wo die Unterschiede bestehen. Rein logisch wäre es mir, wenn die Web Application die Basis für mehrere Web Sites wäre. Aber ASP.NET Web Site kann auch für sich aleine stehen.

Könnte mir jemand kurz einen wink gebene, wann, welche Variante verwendet wird?

Merci

04.06.2009 - 13:14 Uhr

Ohne genauere Codeteile wird's wohl schwierig.

Zu Testzwecken könntest du mal deinen Code mit einem Profiler analysieren... Vielleicht gibts irgend wo einen Speicherfresser (Leek) o.ä.

Empfehle da http://www.jetbrains.com/profiler/ (Lizenzpflichtig)... aber es gibt sicher zahlreiche kostenlose Profiler (such mal hier im Forum).

At least siehst du vielleicht, kurz vor dem Absturzt, welche Methode die Power frisst...

04.06.2009 - 10:55 Uhr

Konntest du obigen Test schon durchführen? Zwei Applikationen nebeneinandern, nicht überlappend laufen lassen (1x deine Verkaufsbearbeitung / 1x eine andere Applikation die den fokus hat)? Wäre ein guter Test obs irgend an nem Zeichnenproblem liegt.

03.06.2009 - 15:45 Uhr

Hab ich das richtig verstanden: Sobald eine andere Applikation verwendet wird, hängt sich deine Applikation auf. (Egal nach welchem Zeitraum)

Folgender Test:
Öffne mal deine Applikation und verkleinere diese, damit du eine andere Applikation daneben auch öffnen kannst. Also das 2 Applikationen nebeneinander auf dem Screen sind (Achtung: dürfen sich nicht überlappen)... Mal schauen ob der switch zwischen diesen Applikationen funktioniert...

falls ja: ist es ein Draw Problem...

PS: "Visible": Habs nicht überprüft, aber sobald ein Fenster neu gezeichnet werden muss, muss er wohl auch bei allen Controls checken, ob diese überhaupt Visible sind. Daher wird das Visible Property so oft angekickt... (!Nicht getestet!)

03.06.2009 - 13:47 Uhr

Vom gesperrten Arbeitsplatz wird wieder in deine Applikation gewechselt. Dabei werden diese Controls neu gezeichnet. Er frägt dabei auch das VisibleProperty ab, ob er dein Control(s) überhaupt zeichnen soll.

Wieso dies aber zu einem freeze führt, ist mir nicht direkt klar.

Frage:

  • Tritt der Effekt nur auf, wenn der User seinen Arbeitsplatz sperrt, oder auch wenn er beispielsweise eine andere Applikation (über längere Zeit?) verwendet (und dabei deine Applikation in den Hintergrund schiebt)
  • Tritt der Effekt auch auf, wenn der User deine Applikation minimiert und den PC danach sperrt?
  • Betriebsystem? .Net Framework Version?

Tests:

  • schmeiz mal das Control, welches du da im Debug gesehen hast, aus deiner Controlsammlung in dem "Verkaufsbearbeitungs"-tab. Und teste mal, obs dann klappt (oder andernfalls wo es nun hängen bleibt)

gruss
dataCore

03.06.2009 - 13:34 Uhr

Beim Wert 0 wird der Commandtimeout ausgehebelt? ... ist auch eine Überlegung wert. So wäre man selber verantwortlich, dass man keinen Endlosloop in seine Commands reinknallt...

Falls also keine anderen Seiteneffekte damit verbunden sind, werde ich das mal auf eine Stunde, oder wie du sagst, ganz auf 0 setzten.

gruss und danke!
dataCore

03.06.2009 - 11:36 Uhr

Noch eine Frage bezüglich des CommandTimeouts. MS SQL 2005 verwendet ja auch dieses Field (default: 30sec) um die Ausführlänge von Commands zu begrenzen.

SqlCommand.CommandTimeout:
http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.commandtimeout(VS.80).aspx

Was spricht dagegen, diesen defaultwert von 30 auf sagen wir mal 60*10 = 10min anzuheben? Ich habe einige wenige StoredProcedures, die teilweise bis zu 5min benötigen. Und möchte des einfach global für alle Commands verwenden.

Meine negativern Effekte:

  • Falls die StoredProcedure einen endlessloop hat, muss ich wohl bis zum 10min timeout warten

Kennt jemand andere Effekte? Oder andere Dinge die dagegen sprechen?

Danke und gruss
dataCore

10.09.2008 - 14:53 Uhr

und wieso geb ich der Section im web.config da eine Versionsnummer als attribute mit? Ist einwenig verwirrend für mich... 🙂

10.09.2008 - 14:04 Uhr

korrekt, aber das Risiko besteht ja, dass die alte Applikation, die die alte Version der DLL referenziert, bei der neuen Version nicht funktioniert (Methoden/Klassen gewechselt usw...)

daher wärs doch flott wenn
alte App = v2.0 dll
neue App = v3.1 dll

da ja beide dll's im GAC sind.


wie sieht das mit dem "section name" aus? auf was bezieht sich der? könnte man mit diesem die beiden unterscheiden?

gruss und dank
dataCore

10.09.2008 - 12:13 Uhr

moinse,

Vielleicht kennt jemand das Problem oder bringt mich vom Holzweg zurück 🙂

Habe ne web.config inder mehrere Elemente in der <configSections> definiert sind. Unter anderem müsste des (mit Problem) so aussehen:


<configSections>:
		<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a646907c4a695009" requirePermission="false" />
		<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=fje2jj23j51kj5l1kj4" requirePermission="false" />
		....
</configSections>

Was ich bezwecken will? Habe 2 Versionen vom EntLib.Logging wobei eine ältere Webapplikation die version 2.0 benötigt und meine aktuelle die version 3.1 möchte. Natürlich meldet mir ASP das beim Aufruf 2 sections mit selbem Namen nicht erlaubt sind und blockt ab.

Nur irgendwie muss das doch möglich sein mit 2 DLL's zu operieren.

Danke für jeden Tipp/idee

grz
dataCore

07.08.2008 - 16:12 Uhr

DANKE! Bin per Zufall auf diese Variante gestossen. Muss auch alle User einer Gruppe ausgeben...

Wirklich sauber! THX

16.01.2008 - 15:29 Uhr

Moin folks,

Ich hoffe im Bereich "WebTec" richtig zu sein da hier bisher noch kein eigener Sharepoint-Bereich eingerichtet wurde.

Es geht um das von Microsoft Out-of-the-Box in Sharepoint (MOSS2007/WSS3.0) integrierte WIKI:

Bin mit dem (doch recht minimalem) Funktionsumfang zufrieden, jedoch wünsch ich mir die Möglichkeit Attachments verschiedener Art und Menge einer WikiPage anzuhängen. Die WikiPage ist eine DocLib die von Haus aus die gewünschte Aktion mit "Datei anfügen" nicht unterstützt da diese schon die WikiPages als Elemente der Liste speichert.

Eine recht dürftige Lösung ist es, eine neue List oder DocLib zu erstellen, dort die Attachments raufzuladen und anschliessen beim Erstellen der WikiPage über das MetaTag (Nachschlagefeld auf DocLib) an die Page anzufügen. (microsoft tipp

Gewünschte Lösung wäre aber, das beim neuerstellen (NewPage) oder editieren (EditPage) direkt unterhalb des HTML Editors ein Button für den Uppload sowie ne Textbox für bestehende Links angeboten wird. Im Hintergrund kann es meinetwegen des in eine DocLib schmeissen und auch gleich die Versionskontrolle aktivieren. In meinen Augen wäre dies doch eine Grundfunktion eines jeden Wikis aber irgendwie find ich da bei Microsoft's SPS Wiki nix vernünftiges!

Danke für etwaige Tipps&Tricks

gruss
dataCore

18.10.2007 - 16:51 Uhr

kann man in diesem Zusammenhang auch das UseVisualStyleBackColor für andere Panels verwenden? Hab in meiner Applikation ein TabControl mit dem Property UseVisualStyleBackColor=true. Des sieht schonmal sehr hübsch aus (dem WinStyle entsprechend) - doch andere Components: GrouBox/Panels die nicht im TabControl drin sind, behalten den normalen Style. Kann man des irgendwie global übernehmen?

Unterschied siehe Anhang

16.10.2007 - 17:47 Uhr

wert des später mal ausprobieren. Dachte auch an die Validation Events auf dem dataGrid. Aber am Schönsten wäre für mich

dataGridView.HasError

🙂

Danke schonmal für den schnellen Tipp

16.10.2007 - 17:09 Uhr

Salü zusammen,

Szenario:

  • DataGridView
  • BindingSource
  • DataSource = Eine Liste mit BusinessObjects welche auch Rules enthalten (z.B. Value darf nicht null sein)

Frage:
Wie krieg ich einfach raus, ob das DataGridView ein Feld/Zeile nicht abspeichern konnte. Also Status=Regel nicht erfüllt. Man sieht ja bei der Verletzung von Regeln (z.B. obiges Value!=null) ein Ausrufezeichen (!) neben der Zeile und im entsprechenden Feld. Ich will also wissen ob das dataGirdView dieses Ausrufezeichen anzeigt, oder nicht.

Kennt jemand ne gute lösung? Eine Variante wäre ja durch alle Rows des DataGridViews zu iterieren und dort den ErrorText abzufragen. Würd ich aber nicht so elegant finden =)

DANKE

28.08.2007 - 15:48 Uhr

wie ich hier sehe gibs auch den command "WAKEONLAN" sowie "WAKEUP" auf der Shutdown.exe

Verfolge zurzeit auch die Idee den PC (oder die PC's) automatisch herunterfahren zu lassen, aber möchte auch das diese wieder automatisch hochkommen. Ist es mit obigen Befehlen also theoretisch möglich, wenn mind. 1 PC läuft, von diesem die anderen PC's zu "Wecken" ?? wäre natürlich sehr sehr geil 🙂

31.07.2007 - 16:31 Uhr

Wie steht es eigentlich um Files von einem anderen, referenzierten Projekt?

Mein Projekt A referenziert dieses andere Projekt B (Class Library DLL). Des klappt ohne Probleme und die dll wird beim ClickOnce published auch angehängt. Die Files bei Projekt B (*.rdlc files - sollte nix zur sache machen) möchte ich auch. Diese sind alle in den Properties auf:
Build Action: Embedded Resource
Copy to Output Directory: Copy always

Beim Menu zu "Application Files..." (ClickOnce) bei Projekt A sehe ich diese Files aber nicht. Und wenn die Applikation auf diese Files zugreifen will - ERROR not found.
Jemand Ahnung?

31.07.2007 - 11:14 Uhr

ja verständlich 👍

Aber in obigem fall wie kann ich das deployen verbessern? Irgendwie möchte ich meinem Kunden nicht zumuten, mehrere programme vor dem eigentlichen (meinem) Programm zu installieren (sprich Framework + ReportViewer.exe)

Welche Variante würdest du persönlich vorschlagen:
a) Setup Projekt erstellen und dort die ReportViewer.exe anhängen
b) Vor dem init des ReportGenerieres einen Checkup auf die GlobalAssembly (lugen ob das System überhaupt die DLLs hat) machen und geg. die RaportViewer.exe ankicken

*Edit: Ich merke jetz dass, wenn ich ein SetupProjekt erstelle, er mir abfrägt und checkt welche dll's ich haben muss - praktische sache das ganze!

Ergo: Falls obiges Problem (oder ähnliches) besteht - SetupProjekt basteln! 🙂

31.07.2007 - 10:41 Uhr

same shit! hatte gerade auch das Problem

dachte zuerst das ich auf dem Testsystem eine falsche Frameworkvariante (2.0 Redistributable) installiert habe (statt SDK). Wär zwar nich logisch 🙂 . Jetzt sieht es aber so aus, dass diese ReportView Assemblys beim Installieren von VS .NET 2005 direkt mitinstalliert werden - beim Installieren von 2.0 Redistributable auf einem Zielsystem (NormalanwenderPC) haut es diese ReportViewer assemblys nicht rein.

Drum hab ich die DLL's einfach dem Projekt angehängt:


Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.Design.dll
Microsoft.ReportViewer.ProcessingObjectModel.dll
Microsoft.ReportViewer.WebDesign.dll
Microsoft.ReportViewer.WebForms.dll
Microsoft.ReportViewer.WinForms.dll

*Anmerkung: Um alle DLL's zu finden muss über einen "richtigen" Explorer (z.B. TotalCommander) oder im DOS ins Verzeichnis C:\windows\assembly gegukt und dortige obige DLL's zusammenzutragen werden.

Ist meineserachtens alles andre als eine saubere Lösung! Ausserdem seh ich gewisse Unteschiede beim generieren des Reports.

Fazit: Entscheide mich auch für die Variante mit der ReportView.exe aber bin irgendwie verwirrt wieso solche aktionen nötig sind.

Drum Frage: Ein .NET Projekt das irgendwelche references (DLL's, andere Projekte) benötigt, die NICHT im Standard Framework Paket enthalten sind, sollten doch ohne speziell-nötige Aktionen direkt beim Release in den output Ordner kopiert werden? Oder seh ich da was falsch

18.07.2007 - 16:54 Uhr

hab aktuell selbiges Problem mit gelicher Fehlermeldung!


using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace TEST
{
    public class DataGridViewGeschNrTextColumn : DataGridViewColumn
    {
        #region properties

        /// <summary>
        /// get or set the DataGridView which contains this cell
        /// </summary>
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false)]
        public override DataGridViewCell CellTemplate
        {
            get
            {
                return base.CellTemplate;
            }
            set
            {
                if ((value != null) && !value.GetType().IsAssignableFrom(typeof(DataGridViewGeschNrTextCell)))
                {
                    throw new InvalidCastException("Must be of type DataGridViewGeschNrTextCell");
                }
                base.CellTemplate = value;
            }
        }

        #endregion

        #region constructor
        public DataGridViewGeschNrTextColumn()
            : base(new DataGridViewGeschNrTextCell())
        {
            this.CellTemplateAndColumnUpdate();
        }
        #endregion

        #region methodes
        /// <summary>
        /// Update CellTemplate
        /// </summary>
        private void CellTemplateAndColumnUpdate()
        {
            DataGridViewGeschNrTextCell cell = base.CellTemplate as DataGridViewGeschNrTextCell;
            if (cell != null)
            {
            }
            if (base.DataGridView != null)
            {
                foreach (DataGridViewRow row in base.DataGridView.Rows)
                {
                    DataGridViewGeschNrTextCell cell2 = row.Cells[base.Index] as DataGridViewGeschNrTextCell;
                }
            }
        }

        /// <summary>
        /// Creates an exact copy
        /// </summary>
        /// <returns></returns>
        public override object Clone()
        {
            DataGridViewGeschNrTextColumn column = base.Clone() as DataGridViewGeschNrTextColumn;
            if (column != null)
            {
            }
            return column;
        }

        #endregion
    }


//////////


    public class DataGridViewGeschNrTextCell : DataGridViewTextBoxCell
    {
        #region properties
        /// <summary>
        /// get editTyp (Type)
        /// </summary>
        public override Type EditType
        {
            get
            {
                return typeof(DataGridViewGeschNrEditingControl);
            }
        }

        /// <summary>
        /// get the type of the value
        /// </summary>
        public override Type ValueType
        {
            get
            {
                return typeof(int?);
            }
        }

        /// <summary>
        /// get defaultNewRow value
        /// </summary>
        public override object DefaultNewRowValue
        {
            get
            {
                return null;
            }
        }
        #endregion

        #region overrides
        /// <summary>
        /// Attaches and initializes the hosted editing control
        /// </summary>
        /// <param name="rowIndex"></param>
        /// <param name="initialFormattedValue"></param>
        /// <param name="dataGridViewCellStyle"></param>
        public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
        {
            if ((base.DataGridView != null) && (base.DataGridView.EditingControl == null))
            {
                base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
            }
            base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
            if ((base.DataGridView != null) && (base.DataGridView.EditingControl != null))
            {
                DataGridViewGeschNrEditingControl control = base.DataGridView.EditingControl as DataGridViewGeschNrEditingControl;
                if (control != null)
                {
                    if (base.Value == null)
                    {
                        this.Value = "";
                    }
                    else
                    {
                        this.Value = control.GeschId;
                    }
                }
            }
        }

        /// <summary>
        /// Creates an exact copy of this cell
        /// </summary>
        /// <returns></returns>
        public override object Clone()
        {
            DataGridViewGeschNrEditingControl cell = base.Clone() as DataGridViewGeschNrEditingControl;
            if (cell != null)
            {
                if (this.Value is int)
                    cell.GeschId = (int)this.Value;
            }
            return cell;
        }
        #endregion
    }


//////////


    internal class DataGridViewGeschNrEditingControl : GeschIdTextBox, IDataGridViewEditingControl
    {
        #region members
        private DataGridView editingControlDataGridView;
        private object editingControlFormattedValue;
        private int editingControlRowIndex;
        private bool editingControlValueChanged;
        private Cursor editingPanelCursor;
        private bool repositionEditingControlOnValueChange;
        #endregion

        #region properties
        /// <summary>
        /// get or set the DataGridView which contains this cell
        /// </summary>
        public DataGridView EditingControlDataGridView
        {
            get
            {
                return this.editingControlDataGridView;
            }
            set
            {
                this.editingControlDataGridView = value;
            }
        }

        /// <summary>
        /// Gets or sets the formatted value of the cell being modified by the editor
        /// </summary>
        public object EditingControlFormattedValue
        {
            get
            {
                //check if null
                if (!base.GeschId.HasValue)
                {
                    return string.Empty;
                }
                return base.Text; //should be formated as xxxx.xxxx
            }
            set
            {
                //only set if it's a string
                if (value is string)
                {
                    base.Text = value.ToString();
                    this.editingControlFormattedValue = value;
                }
            }
        }

        /// <summary>
        /// Gets or sets the index of the hosting cell's parent row
        /// </summary>
        public int EditingControlRowIndex
        {
            get
            {
                return this.editingControlRowIndex;
            }
            set
            {
                this.editingControlRowIndex = value;
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether the value of the editing control
        /// differs from the value of the hosting cell
        /// </summary>
        public bool EditingControlValueChanged
        {
            get
            {
                return this.editingControlValueChanged;
            }
            set
            {
                this.editingControlValueChanged = value;
                this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
            }
        }

        /// <summary>
        /// Gets or set the cursor used when the mouse pointer is over the System.Windows.Forms.DataGridView.EditingPanel
        /// but not over the editing control
        /// </summary>
        public Cursor EditingPanelCursor
        {
            get
            {
                return this.editingPanelCursor;
            }
            set
            {
                this.editingPanelCursor = value;
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether the cell contents need to be repositioned
        /// whenever the value changes
        /// </summary>
        public bool RepositionEditingControlOnValueChange
        {
            get
            {
                return this.repositionEditingControlOnValueChange;
            }
            set
            {
                this.repositionEditingControlOnValueChange = value;
            }
        }
        #endregion

        #region constructor
        /// <summary>
        /// Ctor
        /// </summary>
        public DataGridViewGeschNrEditingControl()
        {
            this.AutoSize = true;
        }
        #endregion

        #region methodes
        /// <summary>
        /// Changes the control's user interface (UI) to be consistent with the specified
        /// cell style
        /// </summary>
        /// <param name="dataGridViewCellStyle">the style</param>
        public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
        {
            this.Font = dataGridViewCellStyle.Font;
            this.ForeColor = dataGridViewCellStyle.ForeColor;
            this.BackColor = dataGridViewCellStyle.BackColor;
        }

        /// <summary>
        /// Determines whether the specified key is a regular input key that the editing
        /// control should process or a special key that the System.Windows.Forms.DataGridView
        /// should process
        /// </summary>
        /// <param name="keyData"></param>
        /// <param name="dataGridViewWantsInputInputKey"></param>
        /// <returns></returns>
        public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputInputKey)
        {
            switch ((keyData & Keys.KeyCode))
            {
                case Keys.Prior:
                case Keys.Next:
                case Keys.End:
                case Keys.Home:
                case Keys.Left:
                case Keys.Up:
                case Keys.Right:
                case Keys.Down:
                    return true;
            }
            return false;
        }

        /// <summary>
        /// Retrieves the formatted value of the cell
        /// </summary>
        /// <param name="errorContect"></param>
        /// <returns></returns>
        public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts errorContect)
        {
            return this.EditingControlFormattedValue;
        }

        /// <summary>
        /// Prepares the currently selected cell for editing
        /// </summary>
        /// <param name="selectAll"></param>
        public void PrepareEditingControlForEdit(bool selectAll)
        {
        }

        /// <summary>
        /// override FireGeschIdChanged event
        /// </summary>
        /// <param name="eventargs"></param>
        public override void FireGeschIdChanged()
        {
            this.editingControlValueChanged = true;
            this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
            base.FireGeschIdChanged();
        }
        #endregion
    }
}

das Component "GeschIdTextBox" kann als StandardTextBox Component angesehen werden...
Ein paar Methoden/Abfragen sind noch leer... sollten aber nichts zur Sache beitragen

**Problem: **Wenn ich nun im Designer diese CustomCell benutzen möchte, erscheint die Fehlermeldung: "At least one of the DataGridView control's columns has no cell template."
Falls ich des "von Hand" reinpacke - erscheint die Fehlermeldung beim Starten des Programms...

pls supply 🙂

15.01.2007 - 19:27 Uhr

ääm hab jetz des mal mit "Assembly.LoadFrom" versucht. Nur ist mir einwenig schleierhaft wie ich auf z.B. Program.cs Main() zugreifen kann...

Ich müsste einfach nur die dll laden und in dieser die Main aufrufen, damit das Progrämchen hochfährt...

wie realisiere ich das? thx in advance

*edit: hab bis jetz schonmal folgendes implementiert

Projekt Interface -> "die scheinheilige dll"

namespace LoaderInterface
{
    public interface startInterface
    {
        void startApplication(); 
    }
}

Projekt MainApplication -> "einfach neben dem Konstruktor noch zusätzlich die startApplication() Methode erstellt mit selber Aktion (init)


namespace MainApplicationNamespace
{
    public partial class MainApplication : Form, LoaderInterface.startInterface
    {
        public MainApplication()
        {
            InitializeComponent();
        }

        public void startApplication()
        {
            InitializeComponent();
        }
}

Projekt UpdateLoader -> "dort auch eine referenz auf LoaderInterface und wie erwähnt die Assembly laden


                Assembly aAsm = System.Reflection.Assembly.LoadFrom(Application.StartupPath + "\\MainApplication.dll");
Type aType = aAsm.GetType("MainApplicationNamespace.MainApplication ");
Object aObj = Activator.CreateInstance(aType);
LoaderInterface.startInterface aObjIntf = aObj as LoaderInterface.startInterface; // <- nix gut, weil NULL
aObjIntf.startApplication(); 

wie kommentiert gibs hier null zurück... nur ich bin da "einwenig" überfordert wieso ich jetz die methode nicht anschmeissen darf/kann und wieso ich kein objekt zurückkriege

15.01.2007 - 11:26 Uhr

ui des tönt schonmal sehr gut (erste variante)

werde des heute abend mal versuchen und dir bescheid geben! DANKE in ADVANCE

14.01.2007 - 23:52 Uhr

andere Frage: Wie oben bereits erwähnt wird wohl der loader das eigentliche Progrämchen extern aufrufen. Ich möcht aber die hauptanwendung in eine DLL compilieren und diese vom loader ausführen lassen.

Mach ich eine referenz auf diese dll (mainapplication) wird diese natürlich gelockt und ich kann sie mit dem loader nicht überschreiben/updaten.

Jemand eine Idee wie man des bewerkstelligen könnte? Irgendwie Runtime referenz oder sowas?

10.01.2007 - 22:27 Uhr

habs jetz anders gelöst... da ich es eh über httpresponse hole lese ich vorher im selben directory noch ein xml ein, indem die aktuelle version steht...

is einwenig umständlich aber auch ne lösung 🙂

ich frag mich nur gerade ob ich über des http auch die file date attribute einlesen könnte - wär wirklich praktischer

09.01.2007 - 20:28 Uhr

hierzu noch eine Frage: wie kann man sinnvoll die versionen vergleichen... hab den loader geschrieben aber nu zerbrech ich mir den kopf wie ich die locale version mit der ausm netz vergleiche...

13.12.2006 - 17:52 Uhr

hab mich einwenig falsch ausgedrückt. Zielsetzung ist es die mp3's abzuspielen! Dies mach ich aktuell auf der Clientseite mit dem WindowsMediaPlayer 10/11 und auf dem Server per MMS:\ Streaming

Noch zu meinen Audiofiles: diese werden beim recorder in eine maximalgrösse erstellt. diese entspricht 15sec! z.B. 10min aufnahmezeit = 40 mp3's. und diese will ich jetzt aneinandergereit abspielen/streamen.

Nun bin ich schonmal soweit das ich die WSX (serverseitige wrapert playlist) gut zum abspielen verwende, um diese files wieder aneinander zu reihen. ("mms:\streamingserver\blabla.wsx")

Probleme:

  1. gaps zwischen den mp3's -> sprich beim wechsel der lieder entsteht eine kleine Verzögerung! Diese ist fatal da ich bei meinen Files einen 100% natlosen Übergang haben muss!!
  2. obgleich der WMP in der Playlist eine "datei" anzeigt, sehe ich den "currentPositionTrackBar" jedesmal für jedes File "umherzäppen"! Besser wär doch wenn der Trackbar/Slider im WMP die gesammtlänge der WSX Datei anzeigt!
  3. Es muss möglich sein innerhalb der Playlist im Slider die Position zu wechseln - daher entfällt das normale FileStreamBroadacsting alla streamRadio

für jede idee oder hilfe wär ich supper dankbar! Falls etwas noch nicht klar sein sollte - bitte rückfragen

12.12.2006 - 17:58 Uhr

Problem mit Zugriff auf Datei - Windows Media Player

da hat jemand auch schon was gefragt - wurde aber noch nicht beantwortet 8)

hf und falls du was interessantes findest in C# - würde mich interessieren

12.12.2006 - 17:55 Uhr

Problem solved:

mit player.settings.rate kann bis zu einem gewissen Grad eine Musikdatei schneller oder langsamer abgespielt werden (ohne verzerr/chipmunk effekt). Die Musikdatei muss dies jedoch unterstützen:


//check ob das file des unterstützt
if (wmplayer.settings.get_isAvailable("Rate")){
    wmplayer.settings.rate = 2.0 ;
}

ist ein double value - bereiche die vertretbar sind: 0.5 <-> 2.0 wobei 1.0 dem standard entspricht

kleine Anmerkung: die funktion des Windows Media Players mit dem "Vorspulen" -> wmplayer.Ctlcontrols.fastForward ist imgrunde nichts anderes als die rate auf 5.0 zu setzen (mit dementsprechend miesem sound 🙂)

also: JUHUU es FUNZT 😁 👍

12.12.2006 - 17:48 Uhr

moin folks,

Hab mal eine (auf den ersten Blick) triviale Frage:

Habe auf einem Server verschiedene MP3 (Format nicht zwingend) - diese kann ich über mms:\ abstreamen... (Variante RTSP ist auch offen) z.B. "mms:\serverIP\testmp3\meinmp3.mp3" Die MMS Technologie (wie auch bei RTSP) bietet mir die möglichkeit - innerhalb des Streams an eine Position zu hüpfen!! Dies ist sehr wichtig... der Stream setzt dann sein "gebuffere" ab der neuen Position weiter...

Alles gut und recht aber nun hab ich sagen wir mal von einer Band ein paar MP3's - diese will ich nun am stück abspielen:

\hansi\lied1.mp3
\hansi\lied2.mp3
\hansi\lied3.mp3

Mit folgendem Augenmerk:
-> es soll KEINE unterbrechung geben! (sprich no crossfade - kein gestocke usw - fliessender Übergang)
-> am Schönsten wär, das der TrackBar im Player (verwende WMP) von lied1 0:00 bis lied3 ende geht - - und in dem ich auch rumzappen kann 🙂

Hab mich da einwenig über ASX informiert aber imgrunde spielt man hier nur eine Playlist ab! Es wird ganz auf das Streaming verzichtet. Verwendet man innerhalb der ASX Playlist den mms:\ stream - führt dies beim wechsel der Lieder zu einen kleinen Unterbruch -> aufgrund der erneuten mms:\ connection die erstellt wird.

--

Wie gehabt habe ich Formate und Standards noch nicht festgelegt! Daher könnte ich mir auch eine RTSP Variante vorstellen... habt ihr irgendwelche Ideen?? THX in ADVANCE

04.12.2006 - 11:28 Uhr

niemand einen tipp? bin jetz mal soweit das, wenn ich den mediaplayer über die com ansteuere, dieser weitere schnittstellen bietet (especialy für plugins)

z.b.:
Interop.WMPLib.Effects (für das Effektplugin) oder Interop.WMPLib.Equalizer (is klar🙂 aber irgendwie finde ich keine Schnittstelle für das "Speed Plugin" -> "Wiedergabegeschwindigkeit"

Irgendwie muss man des doch ansteuern können??? pls help

04.12.2006 - 11:16 Uhr

mm möcht gerne wissen wie du mit dem Windows Media Player eine Datei aufnehmen willst... (wird hierzu nicht der Windows Recorder verwendet??) - - hab diesbezüglich (record) nur wenig .net erfahrung.

Zudem wären noch Angaben über die Version sowie das verwendete Windows Media SDK (oder ob du es über COM ansteuerst) nützlich

28.11.2006 - 18:46 Uhr

moin folks,

Mithilfe von WM SDK 10 kann ich ein component **Windows Media Player ** auf meine Applikation ziehen und diese auch super ansteuern (embedded). D.h. mit eigenen Buttons den Player im Hintergrund Starten/Stoppen/Pausieren usw..:
(Bsp in PseudoC# ^^)


//LIB: AxInterop.WMPLib.dll

AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
axWindowsMediaPlayer1.URL = @"C:\mycsharpRoxx.mp3";

[...]

axWindowsMediaPlayer1.Ctlcontrols.play();

Alles gut und recht. Nun möchte ich aber zusätzlich zum Abspielen das Speed Control ("Play Speed Settings") Plugin ansteuern um die Geschwindigkeit zu regulieren (Fachsprache: Pitching). Dieses Plugin gehört zu Windows Media Player 10 und wird da mitgeliefert (ist also kein externes Plugin). Soweit ich des mal bei der lokalen Suche festgestellt habe, sind diese mitgelieferten Plugins (wie z.B. "SRS WOW Effect", "Graphic Equalizer", usw) in der "wmploc.dll" abgelegt (unter "C:\Windows\System32")

Ich bin teilweise noch unbeholfen mit COM und Schnittstellimplementierung externer progs/dlls aber ich denk mal das des der einzige weg hierfür ist - aber ich kann des ums verrecken nich finden/zum funzen bringen...

Sicherlich hatte jemand schon ein ähnliches Problem, daher zähle ich auf eure Hilfe...

DANKE 🙂

28.11.2006 - 09:15 Uhr

Allgemeines zu Windows Media Player Plugins
-> http://www.microsoft.com/windowsxp/using/windowsmediaplayer/expert/bridgman_03march17.mspx

Windows Media SDK 10 für XP unter Microsoft Visual Studio 2005 lauffähig machen
-> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/playersdk_readme.asp

Nun könnt ihr unter "Neu - Projekte - Windows Media Player Plugin Wizzard" eines der folgenden 4 plugintypen entwickeln:

  • Visualization
  • UI Plugin (Display, Settings, Metadata, Window, Background)
  • DSP Plugin
  • Render Plugin

Aktuell entwickle ich eine "Steuerung" für ein Fusspedal und verwende hierzu ein UIPlugin als Background. Falls bei euch unter den verschiedenen plugintypen obiger Fehler auch Auftritt: Macht einfach folgendes:

ProjektProperties:
C/C++ -> general -> additional include directories -> "includeOrdner vom directX SDK angeben"
Linker -> general -> additional library directories -> "libOdner vom directX SDK angeben"
Linker -> input -> additional dependencies -> "alle libs von directX Ordner eingeben"

Weitere infos zu Windows Media SDK 10 kommen... (when its done ^^)

24.11.2006 - 11:34 Uhr

habe mich jetz umentschieden und verfolge den folgenden Ansatz:
Windows Media Player DSP Plugin
-> um Streaming und handling der MP3 Daten brauch ich mich nicht mehr zu Sorgen
-> Pitching gibs schon teilweise (werd des aber als eigene Variante ins DSP Plugin einfliessen lassen)
-> Ansteuerung Fusspedal fliesst in das Plugin (als Background) ein

Hierzu brauch ich (winXP, VisualStudio2005):
-> Windows Media SDK 10
-> DirectX SDK 9 (oct2006)
-> c++ 🙂


Alles in allem sieht des fein aus, jedoch erhalte ich beim compilen der Samplefile einen eigensinnigen Fehler:

fatal error C1083: Cannot open include file: 'mediaobj.h'

Setze mich jetzt mal da ran und werd euch hier über WMP usw auch bald ein Summary reinstellen.

24.11.2006 - 11:25 Uhr

Vielleicht falscher und banaler ansatz aber kannste mal probieren:

mit Microsoft.DirectX.AudioVideoPlayback funzt es bei mir teilweise auch nicht (je nach Video/Audio)... hab aber einfach neben Microsoft.DirectX.AudioVideoPlayback auch noch Microsoft.DirectX importiert:


[...]
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;

protected Audio audio = null;
[...]
{
    this.audio = Audio.FromUrl(new Uri("C:/meinMP3.mp3"), false);
    this.audio.Play();
}

Entwicklungsumgebung:
-> Windows XP pRofl
-> Visual Studio 2005
-> DirectX 9 SDK

22.11.2006 - 11:14 Uhr

hab das Problem immernochnich gefixt... Jedoch taucht (soweit mir ist in diesem Zusammenhang) ein Problem mit Visual Studio 2005 auf. Seit der missglückten installation des .net 3.0 frameworks werden im visual Studio keine eigenen Komponente in der Toolbox angezeigt. Tests auf anderen Machinen bewiesen mir, dass dies nur von meiner Machine mit meiner .net Installation abhängt. Die componente/user controlls werden nämlich nur in der Code-Ansicht aufgelistet und zwar mit TextSymbolIcon und dem Namen: "Text: url\componentXY.cs" ... hat jemand selbiges problem oder gar einen Lösungsweg??