Mr Evil schrieb:
schon gesehen ?:
http://www.codeproject.com/KB/miscctrl/csmarquee.aspx
jap Studiere ich gerade einwenig.
Ich glaube ich muss mich dafür mal mit Threading beschäftigen das brauch ich sowieso noch für das Programm.
hab das von codeprojekt mal implementiert aber durchlaufen tut da bei mir nichts ^^ es Flackert kurz auf und steht dann fest auf der GUI
ich habe jetzt dieses c++ struct
public struct tKSRWComConfigData
{
tKSRWDllComType m_ComType;
union
{
struct
{
unsigned char m_ubPort; //COM port
unsigned long m_uwBaudrate; //baud rate
tKSRWDllParityMode m_DllParityMode;
unsigned char m_bAreTwoStopBits;
} m_RS232;
struct
{
unsigned long m_udwDeviceNumber;
} m_USB;
struct
{
unsigned char m_bIPAddressType; //0 = IPv4 or 1 = IPv6
unsigned char m_bIsIPAddress;
union
{
unsigned char m_rgubIPAddress[16]; //IPaddress
unsigned char m_rgubNetworkName[16];
} m_KindOfConnection;
} m_Ethernet;
} m_ComConfigParameters;
};
in dieses struct gewandelt die unsions habe ich weggelassen (d.h. es braucht mehr speicherplatz und ein einfaches memcopy beim zuweisen geht dadurch nicht mehr)
public value struct tRS232
{
unsigned char m_ubPort; //COM port
unsigned long m_uwBaudrate; //baud rate
tKSRWDllParityMode m_DllParityMode;
unsigned char m_bAreTwoStopBits;
};
public value struct tUSB
{
unsigned long m_udwDeviceNumber;
};
public value struct tEthernet
{
unsigned char m_bIPAddressType; //0 = IPv4 or 1 = IPv6
unsigned char m_bIsIPAddress;
array<unsigned char> ^m_rgubIPAddress; //IPaddress
array<unsigned char> ^m_rgubNetworkName;
};
public value struct tKSRWComConfigData
{
tKSRWDllComType m_ComType;
tRS232 m_RS232;
tUSB m_USB;
tEthernet m_Ethernet;
};
Danke nochmal für die Hilfe
MfG
Das läuft Prima danke dafür erstmal.
Jetzt muss ich sehen wie ich das so hinbekomme das sich dadurch (wie soll ich sagen) die "items" selbst erzeugen auf der GUI.
Schon mal auf die Idee gekommen das es auch noch eine andere Wirklichkeit gibt außer die, die Du kennst ?
was sagen denn die software architekten dazu das sie von der ahnungslosen it in ihrer arbeit behindert werden ?
Nur weil die IT bei euch vllt. Ahnungslos sein mag muss dies nicht auf andere IT Abteilungen zutreffen. Der Begriff dürfte für ein solches Urteil viel zu schwammig sein.
Ansonsten: Es muss nicht immer das neueste Framework sein. Irgendwann muss ein Produkt auch mal fertig werden - erst recht wenn sich der Aufwand in Manntagen berechnet, nicht in Mannmonaten.
Hat sich erledigt. Ich nehme einfach
strTableName = strTableName.Replace("$", "")
und weg ist das unerwünschte Zeichen. Woher das Zeichen beim Einlesen kommt, bleibt mir aber weiterhin rätselhaft.
Willst du ein generisches Interface in einer Liste benutzen, musst du das Interface splitten in ein Generisches und ein Nicht-Generisches Interface.
Also wird aus:
interface IDataSource<TSource>
{
TSource GetCurrentDatabase();
void CreateNewDatabase();
TSource[] GetQuerySources(DateTime from, DateTime to);
}
das hier
interface IDataSource
{
void CreateNewDatabase();
}
interface IDataSource<TSource> : IDataSource
{
TSource GetCurrentDatabase();
TSource[] GetQuerySources(DateTime from, DateTime to);
}
in deinem Fall sollte es aber reichen wenn du den DataSourceManager Generisch machst. Vielleicht wär hier sogar ein Singleton angebracht, weiss aber gerade nicht in wie fern die Instanz benutzt wird.
jo - der link scheint gut zu sein - habs grad nur ueberflogen
was mir dort wieder aufgefallen ist diese generische AttachedBehavior "funktionalitaet"
sowas hab ich auch , aber in einer abgespeckten version - bei der publizierten generischen version gefaellt mir nicht das nur die CommandParameter uebergeben werden - nicht die eigentlichen event parameter
so kann man es zb fuer Closing e.Cancel = true nicht verwenden , da man gar keine entsprechenden parameter bekommt
ich wollte mir auch schon eine generische loesung ausdenken - bin aber noch nicht dazu gekommen - mir sind da nur zwei sachen wichtig - einmal das man auch kurz schreiben kann - und zum anderen das man die event parameter (evtl optional) bekommt
wie gesagt - versuch ich spaeter mal
genau das DelegateCommand
das hab ich auch - klar - hat man bei mvvm eh
nur da hab ich ebenso eine kuerzere version - in dem link ist ein beispiel mit DelegateCommand wo ich bisher kein mehrwert erkennen konnte - viele objekte die man - soweit ich das seh - gar nicht brauch
aber wie gesagt - der link scheint gut zu sein {=
auch dann wuerd ich sagen => design fehler
CreateNewList sortiert nur die parameter list ?
eine sortierte liste ist doch keine neue liste
dann ist entweder
List.Sort zu verwenden oder
SortList(List) zu erstellen
am sonsten - irgendwo
listRef = toUseList;
zu schreiben duerfte doch eigentlich kein problem sein
Ich habe jetzt mal versucht garnichts zu machen , dh. die
DataError Methode leer zu lassen. Dann erhalte ich keine Fehlermeldung
jedoch sind die einzelnen Textfelder welche ich über
tb_Vorname.DataBindings.Add("Text", bindingSource1, "Vorname");
etc
anbinde, nicht mehr mit dem Gridview verbunden und zeigen nichts an.
dasonmos schrieb:
Lies dir einfach mal die betreffenden Abschnitte hier drin durch. Ist recht umfangreich, als Einsteigerlektüre oder um einen umfassenderen Wissenstand zu erhalten hilfreich: http://www-alt.uni-trier.de/urt/user/baltes/docs/csharp/csharp.htm
Das Dokument enthält weniger Informationen über die C# Netzwerkprogrammierung als die von mir zitierte Quelle.
dasonmos schrieb:
Nur mal so als Ansatz. Vielleicht liegt es auch ganz einfach an deinem Client. Ich würde empfehlen, dass du dir selbst einen schreibst (der natürlich auf einem anderen Port läuft) und einfach mal schaust was passiert. Ich weiß zwar nicht wirklich wie es mit Putty aussieht, aber das verwendet doch SSH und andere Protokolle. Dein Server verwendet aber schleicht und einfach TCP. Das ist eine ganz andere Ebene im OSI-Layer.
Irgendwie hab ich das Gefühl du verstehst das OSI-Modell nicht. Auch PuTTY verwendet natürlich TCP. Praktisch jede Anwendung im Internet nutzt entweder UDP oder TCP als Transportprotokoll für die Daten. Das SSH Protokoll basiert auf der Transportschicht TCP. Das SSH ist ein Protokoll der Anwendungsschicht, was auf Sicherheit ausgelegt ist. Auch das HTTP befindet sich in der Anwendungsschicht und nutzt ebenfalls TCP.
Natürlich kann man sich mit PuTTY zu einem TCP Server geschrieben in C# verbinden. Man muss nur den richtigen Port unter localhost wählen.
Alter Falter schrieb:
Und wo ist das Problem? Einen Zugriffsmodifizierer muss der Konstruktor doch sowieso haben, wenn er nicht private sein soll. Also ist das doch keine Mehrarbeit.
Es geht nicht um Mehrarbeit, es geht um Klarheit. Mit abstract kann ich deutlich die komplette Klasse als abstrakt deklarieren ohne explizit mir Gedanken um die Konstruktoren zu machen.
Alter Falter schrieb:
Viel komischer finde ich es, wieso ich in einer als abstract markierten Klasse den Konstruktor trotzdem noch auf public oder protected setzen kann. Wo ist da der Sinn? Was ist der Unterschied zwischen
abstract class X
{
public X() { }
}
und
abstract class X
{
protected X() { }
}
?
In C# ist der Default-Konstruktor auch automatisch immer protected, sobald die Klasse abstract ist. In vielen Fällen wird nämlich überhaupt kein Konstruktor implementiert.
Falls ein Konstruktor implementiert wird um Initialisierungen etc. vorzunehmen, dann ist es sogar ein guter Codestil, den Konstruktor einer abstrakten Klasse zusätzlich mit protected zu versehen, weil es zeigt das nur die abgeleitete Klasse sie instanzieren kann. Natürlich macht es dann keinen Sinn den Konstruktor auf public zu stellen.