dankeschoen - der ms server war heute morgen zu langsam - drum hab ich nicht sehr lange gesucht #gg
hmm - komisches ding - der findet in meinen assemblys keine "performance tools"
ich habe mich vorher nie mit profiling beschaeftigt, ich nahm an man laed ein assembly, startet das aus dem tool heraus, sodass zur laufzeit - wenn man rumspielt damit - ermittelt werden kann was wie lange dauerte /=
hab eben ma bei meinen TL geschaut, er hat dieses performance ding in seiner team blabla version - werds mir auch aus der msdn holn und das pro dadurch ersetzen
Hallo.
Habe eine Windows-Forms-Anwendung geschrieben und verwende eine DataGridView mit einer DataTable als Datenquelle um ein paar Informationen tabellarisch darzustellen.
Ich möchte, dass sich meine Hauptfensterbreite dynamisch an die Breite der darin enthaltenen Tabelle anpasst.
Dazu frage ich die Breiten aller Spalten der Tabelle ab und setzte die Summe aus diesen Breiten als neue Fensterbreite fest.
Nur leider liefert mir das Attribut für Spaltenbreite (DataGridViewColumn.Width) immer den Dafaultwert 100, obwohl die Spalten offensichtlich andere Breiten haben. Hier der Code:
private void BreiteAnSpaltenAnpassen(MappingForm mf)
{
DataGridView dgv = mf.MappingFormDataGridView;
int wdth = dgv.RowHeadersWidth + (int)(dgv.Columns.Count * 2);
foreach (DataGridViewColumn d in dgv.Columns)
{
wdth += d.Width;
}
dgv.Width = wdth;
//mf.Width = dgv.Width;
}
Wisst ihr was ich falsch mache ?
Danke.
habe ein GEmeinsames Interface zwischen Server und Cliente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
namespace ClientInterface
{
[Serializable]
public class DeviceModule
{
public int m_ID;
public string m_Name;
}
public interface IClientInterface
{
List<DeviceModule> GetModuls();
void GetModul(int i,out DeviceModule tmp);
int Summe(int a, int b);
string GetModulString(int i);
}
}
nun will ich ein Objekt vom Typ DeviceModule übers netz schicken, oder am besten noch ne Liste aus diesen Objekten... das müsste doch gehen oder net?
Aber irgendwie nimmt er mir den SOAP Sericalisierung..müsste es aber binär machen.. jemand ne idee? oder muss ich das objekt aufm server selber serialisieren und aufm client deserialisieren?
System.Runtime.Serialization.SerializationException: Soap Serializer does not support serializing Generic Types : System.Collections.Generic.List`1[ClientInterface.DeviceModule].
EDIT: Würde gern ne klasse mit Objetlisten serialiseren in ein stream.. und denn dan über Remoting übers netz schicken.. und da wieder deserialiseren.. aber ich find nix im netz...
Leidiges Thema ich weiß Folgende unterschiedliche Varianten gelesen, was findet in der breiten Masse/Praxis Anwendung ?
Button button1 -> MSDN und VS generiert
Button btnOk -> ungarisch
Button OkButton
Ich finde kein überzeugendes Argument für eine dieser Nomenklaturen, eigentlich würde ich die zweite bevorzugen aber ungarisch ist ja pauschal pöse und um konsistent zu sein müsste man eigentlich auch alle anderen variablen so benennen...hm
Meinungen ?
PictureBox pb = Controls[key] as PictureBox;
pb.Image = Image.FromFile("C:\\turned.jpg");
Das führt zu nem Programmabsturz wenn Controls[key] keine Picturebox ist weil pb dann null ist. (das ergebnis von "as" ist null wenn das object nicht vom erforderten Type ist.)
Habe rumprobiert. kriegs aber irgendwie nicht hin. Eigentlich kann
ich doch mit der DataTable.Select() die daten filtern. Dann müssen diese Daten wieder mit dem DataAdapter.Fill() wieder neu geladen werden, oder? Das geht aber bei mir nicht. Genauso könnt ich doch das DataSet verwenden. Der Knackpunkt ist halt, das ich die gefilterten Daten nicht ins DataGridView oder in die gebindeten TextBoxen bekomme. Wer kan nmir dabei helfen? DIe gefilterten Daten
testTable.Select("Alias LIKE " + "\'" + txt_Artikelsuche + "\'");
müssen doch eigentlich nur an den DataTableAdapter neu geladen werden, oder sehe ich das falsch?
adapter.Fill(testTable);
Dann müßte sich ja das DataGRidView auch von selbst neu aufbauen.
BorisDieKlinge schrieb:
hehe;) Ja das stimmt... dongle wäre die letzte möglichkeit gewesen;)
ABER.. wenn ne .NET Anwendung decompiliert werden kann, kann auch die schnittstelle mit dem dongle gehackt werden oder net?
btw, auch nicht-Net Anwendungen können decompiliert werden, das heisst dan nur Disassembliert.
Ebenso könnte jemand mittels Logik Analyser den Dongle analysieren und nachbauen. Alles ist knackbar, die Frage ist der damit verbundene Aufwand, bzw die Formel:
if( Kosten < Nutzen )
{
Hack()
}
else
{
NoHack()
}
Schau Dir mal die letzten 10 Jahren Den Sender Premiere an. Die benutzen faktisch Dongles und sind noch immer in kürzester Zeit gehackt worden.
Mal ganz davon abgesehen das es in den meisten Fällen einfacher wäre Deinen Heimischen PC zu hacken und sich einfach die Original Sourcecodes zu holen.
"Seite auf existenz prüfen".
Was genau meinst du?
Das es den Host gibt? Das auch Port 80 offen ist? Das auf Port 80 ein http-Server läuft?
Je nach Host kann es halt sein, dass die Anworten lange auf sich warten lassen. Je nach anzahl der zu sendenden und empfangenden Pakete kann das sehr "lange" sein.
Prinzipiell würde sich da eine parallele abarbeitung mehrere Seiten anbieten, dadurch wird der Durchsatz erhöht und auch die Netzwerk-Bandbreite besser genutzt.
Zude, gibt es bei http neben dem GET auch ein HEAD Kommando, damit wird nur der Header ohne die eigentlichen Daten abgerufen, was auch Zeit und Bandbreite spart.
Solltest allerdings aufpassen, welche Seiten du scannst und auch wie häufig, sonst kann es schnell ärger geben
Warum soll man dann nicht mit ner antwort auf ne Frage rechnen?
Dann stell doch mal eine konkrete Frage. Wie Du für Dich am einfachsten in GDI einsteigen kannst, wird Dir niemand, der Dich nicht näher kennt, beantworten können. Es ist ja nicht mal klar was Du für Vorkenntnisse hast. Zwischen den Zeilen lesend würde ich sagen, das Du keine Eigeninitiative aufbringen kannst und nicht gewillt bist selbst in ein Thema einzuarbeiten.
Das von Dir gepostete Tutorial ist vllt. nicht optisch hübsch, liefert aber auf die schnelle einige Informationen mit denen man weiter suchen kann. Die Artikel aus CodeProject helfen jemanden der wirklich Interesse hat ebenso weiter.
Google: C# GDI+ Tutorial Liefert weitere schöne Informationen für einen Einstieg.
Wenn Du gute Antworten willst, stell vernünftige Fragen:
http://www.tty1.net/smart-questions_de.html
Unix-Tom schrieb:
string var = Convert.ToString(a)+Convert.ToString(b)+Convert.ToString(c)
Ist einer der vielen Möglichkeiten.
Joar, und zwar wahrscheinlicht die schlechteste.
Zum Konkatenieren gibt es im Prinzip drei Möglichkeiten, die man in Erwägung ziehen sollte:
• System.Text.StringBuilder ,
• string.Format ,
• string.Concat .
Letztere entspricht dabei zwar im Prinzip dem, was Du geschrieben hast, die expliziten Konvertierungen fallen aber weg. Dafür tritt Autoboxing in Kraft, das ist aber nicht schlimm.
Wenn man Werte konkateniert, die bereits Strings sind, dann kann man natürlich auch den +-Operator verwenden.
`String.Format` lohnt sich vor allem, wenn man eben (wie der Name schon sagt), eine Ausgabe formatieren will.
`StringBuilder` ist vor allem für das effiziente Erstellen sehr großer Strings geeignet. Es handelt sich essenziell um einen String, der verändert werden kann (und der Speicher reserviert, um Anhängen schneller zu machen).
ich habe was besseres fuer dich gefunden.
mit filesystemwatcher findest du welche datei geaendert wird. dann speicherst du alle geaenderte dateien in einer txt datei.
beispielcode hier
public class Watcher
{
public static void Main()
{
Run();
}
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
string[] args = System.Environment.GetCommandLineArgs();
// If a directory is not specified, exit program.
if(args.Length != 2)
{
// Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)");
return;
}
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. /
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = ".txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Begin watching.
watcher.EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
}