Wobei ich festgestellt habe, dass selbst wenn ich "von Hand" in Excel die Daten formatiere, die Zahlen ebenfalls nciht korrekt angezeigt werden.
Liegt vermutlich am Exportieren der Daten nach Excel?!
Worauf müsste ich da achten? In der Datenquelle (GridView) hab ich die Spalte mit als Währung formatiert.
dataGridView1.Columns[5].DefaultCellStyle.Format = "c";
Hallo
Vieleicht hat mir dazu ja jemand eine Antwort:
Ich habe im EntityFramework Designer eine Klasse erstellt von der wiederum 3 Klassen ableiten (TPT)
Die Basisklasse hat ein int als Key der sich Position nennt.
Nun sollte der Key eindeutig sein aber je abgeleiteter Klasse
Es ist aber nur möglich einen key nur einmalig anzulegen.
Kann man das irgendwie ändern. Wie sieht das bei TPH aus?
TheJoGie schrieb:
Das zeigt ja die eingegebene Zeit in einer Progressbar an. Ich würde aber gerne die aktuelle CPU-Auslastung (die ja im label1 angegeben wird)
Ich weiß ja nicht, wo bei dir was steht, ist mir ja auch egal Aber du hast es ja zumindest geschafft, die Idee soweit anzupassen.
Sollte jetzt doch eigentlich ganz einfach sein, das noch richtig hinzubekommen? Wo kommt der Wert in deinem Label1 her? Schau dir den Code mal an. Hast du an der Stelle nicht auch den Wert als Zahl und könntest du ihn nicht gleich der Progressbar zuweisen?
aloxif schrieb:
private void open_button_Click(object sender, EventArgs e)
{
string pfad = @"\\nas\public\Temp\trueandfalse.txt";
FileStream pf = new FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(pf);
string text = "true";
writer.WriteLine(text);
writer.Flush();
writer.Close();
pf.Close();
}
private void close_button_Click(object sender, EventArgs e)
{
string pfad = @"\\nas\public\Temp\trueandfalse.txt";
FileStream pf = new FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(pf);
string text = "false";
writer.WriteLine(text);
writer.Flush();
writer.Close();
pf.Close();
}
private void nothing_button_Click(object sender, EventArgs e)
{
string pfad = @"\\nas\public\Temp\trueandfalse.txt";
FileStream pf = new FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter writer = new StreamWriter(pf);
string text = "nothing";
writer.WriteLine(text);
writer.Flush();
writer.Close();
pf.Close();
}
Nur ein kleiner Tipp: Lagere ähnlichen Code in eine Methode aus statt ihn per Copy&Paste zu vervielfältigen. Die unterschiedlichen strings (string text = ...) übergibst Du einfach als Parameter.
Außerdem kennt C# using Statements ( http://msdn.microsoft.com/en-us/library/vstudio/yh598w02.aspx ). Damit gibt man Ressourcen auf Exceptionsichere Weise wieder frei statt per Hand Close oder Dispose aufzurufen.
Natürlich geht das.
Wiso sollte das den nicht gehen.
Die Konsole ist auch nur ein WinApi DosEmulator.
Lösung:
http://youtu.be/KcC5S-eIk8E
Der Code ist in dem Video und in der Beschreibung ist ein Download.
Hey Leute,
ich schreibe gerade einen Context Menu Handler in C# und nutze dabei die SharpShell Bibliothek.
Soweit läuft es ganz gut, aber da ist etwas, was mich stört und zwar: Wenn ich einen Rechtsklick auf z.B. eine txt-Datei mache, dann wird mein Menustrip richtig angezeigt mit Bild und Text, genau so wie ich es haben wollte. Doch, wenn ich dann mit der Maus über den Menustrip fahre, dann wird auf einmal der Hintergrund meiner Bilddatei weiss, obwohl dieser eigentlich transparent ist.
Wisst ihr woran das prinzipiell liegt, auch wenn ihr keine Lösung in Bezug zu SharpShell wisst?
Danke im voraus,
ambitious
[code="cs"]
List<List<int>> GrSpeicher = new List<List<int>>();
for (int A = 0; A < 5; A++)
{
List<int> KlSpeicher = new List<int>();
for (int B = 0; B <= A; B++)
{
KlSpeicher.Add(B);
}
GrSpeicher.Add(KlSpeicher);
}
Console.WriteLine(GrSpeicher[4][4].ToString());
Console.ReadKey();
Vielen Dank das hilft mir!
Ich möchte gerne programmgesteuert ein anderes Programm starten und seine Ausgaben Event-gesteuert anzeigen.
Durch die Informationen von Msdn habe ich mir diesen Code zusammengeschustert:
Process p = new Process();
ProcessStartInfo pInfo = new ProcessStartInfo(<Name und Parameter des Programmes>);
pInfo.UseShellExecute = false;
pInfo.RedirectStandardOutput = true;
p.StartInfo = pInfo;
p.OutputDataReceived += new DataReceivedEventHandler(<CallBack, dass aufgerufen werden soll, wenn neue Daten ausgegeben werden>);
p.Start();
p.BeginOutputReadLine();
Ich möchte also erreichen, dass jedes Mal, wenn neue Ausgaben auf der Konsole erscheinen würden, ein Callback aufgerufen wird. Leider läuft dieser Code nicht so, wie erwünscht, er wird aber kompiliert.
Kann mir im Bezug auf dieses Problem weiterführende Informationen geben?
Oder allgemeiner: Wie kann Konsolenausgaben eines Programmes abfangen und anzeigen?
Hallo an alle,
wir haben ein kleines Projekt entwickelt mit folgenden Anforderungen:
Ein Windows Dienst soll beim Start von Windows, aber schon vor der Benutzeranmeldung laufen. Der Dienst hört auf einem Netzwerkport und wartet entweder auf einen "Shutdown" oder einen "Restart" Befehl. Der Dienst soll auch noch weiterlaufen wenn der Benutzer angemeldet ist.
Hier sieht man wie der Dienst installiert wird:
using System;
using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;
namespace WakeOnInternetService
{
[RunInstaller(true)]
public class WakeOnInternetServiceInstaller : Installer
{
/// <summary>
/// Public Constructor for WindowsServiceInstaller.
/// - Put all of your Initialization code here.
/// </summary>
public WakeOnInternetServiceInstaller()
{
ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
ServiceInstaller serviceInstaller = new ServiceInstaller();
//# Service Account Information
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
serviceProcessInstaller.Username = null;
serviceProcessInstaller.Password = null;
//# Service Information
serviceInstaller.DisplayName = "WakeOnInternetClientService";
serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.Description = "Waits for wake messages";
// This must be identical to the WindowsService.ServiceBase name
// set in the constructor of WindowsService.cs
serviceInstaller.ServiceName = "WakeOnInternetClientService";
this.Installers.Add(serviceProcessInstaller);
this.Installers.Add(serviceInstaller);
serviceInstaller.AfterInstall += ServiceInstaller_AfterInstall;
}
private void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
ServiceController sc = new ServiceController("WakeOnInternetClientService");
sc.Start();
}
}
}
In der
OnStart
Methode meines Dienstes starte ich den "ListenThread" für die Netzwerkkommunikation. Folgende Methoden verwende ich um das System herunter zu fahren oder neu zu starten:
private void SystemShutdown()
{
Process.Start("shutdown", "/s /t 0");
}
private void SystemRestart()
{
Process.Start("shutdown", "/r");
}
Nun zu meinen Fragen:
Welche
serviceProcessInstaller.Account
kann ich dazu verwenden und wo sind die Unterschiede?
Kann man die Mathoden
SystemShutdown
und
SystemRestart
ohne Benutzeranmeldung ausführen?
Der Dienst hat beim testen nach Benutzeranmeldung funktioniert und wird auch automatisch gestartet.
Mit freundlichen Grüßen,
VRComputing
Ich konvertiere nun IEnumerable in eine DataTable, damit konnte ich das Problem lösen und ist zudem wohl auch die "saubere" Lösung, um die Daten zu binden.
Hallo zusammen.
Habe momentan ein für mich nicht lösbares Problem.
Und zwar Verusche ich ein WPF Datagrid als Matrix zu verwenden. Ähnlich einem Schachbrett.
Die Zeilen werden durch eine Klasse repräsentiert, die eine ID und einen Namen enthält. Das ist sozusagen meine Zeilenbeschriftung.
Desweiteren habe ich Spalten deren Anzahl nicht fest ist. Diese werden über eine Schleife im Codebehind erzeugt.
Das CellTemplate ist ein Togglebutton dessen Style so angepasst ist damit man nur den IsChecked Status als ausgefülltes Rechteck erkennen kann. Dadurch habe ich die Möglichkeit irgendwelche Abhängigkeiten festzulegen.
Hier mal eine Zeichnung eines algemeinen Beispiels um das etwas besser Verständlich machen zu können:
ID | Name | A | B | C | D | E |
0 | null | | | | | |
1 | eins | | | | | |
2 | zwei | | x | | x | |
3 | drei | | | | | |
4 | vier | | | | x | |
5 | fünf | x | | | | |
6 | sechs | | | | | |
Mein Grid ist noch etwas größer und komlizierter. Ca 90 Spalten und 130 Einträge. Mit zusätlichen Gruppenheaders. Sollte aber hier mal nichts zur Sache tun.
Ich habe nun bereits mehrere Grids von Drittanbietern verwendet. (infragistics, telerik und xceed)
Dementsprechend ist auch bei jedem Control der Code etwas anders.
Doch bei allen musste ich das selbe Feststellen:
Ich setze irgendwo "Häckchen" und scrolle. Dabei werden die Häckchen bzw. in meinem Fall die markierten Rechtecke wie wild verschoben.
Es scheint für mich als wäre hier der Speicher zu klein. Bzw. ich kann mir das nicht genau erklären was hier falsch läuft.
Hätte mir vieleicht irgendjemand einen Tipp was zu diesem Phänomen führt. Und wie ich es in den Griff bekomme dass die Markierungen dort bleiben wo ich sie gemacht habe.
Für die Zukunft:
Bitte markiere interessante Stellen im Code, z.B. per Kommentar. Die Zeile
int RecByte = socket.Receive(buffE);
kommt mehrmals vor. Und die Stelle in Deiner Form ist überhaupt nicht auffindbar.
Für jetzt:
Hier http://msdn.microsoft.com/en-us/library/8s4y8aff.aspx steht, dass das Blockieren bei Receive(byte[]) normales Verhalten ist. Die Anweisung kehrt erst zurück, wenn der Puffer voll ist.
Teste das, indem Du dem Socket Daten zum Lesen zur Verfügung stellst. Blockiert er immernoch, nachdem Daten in der Größe des Puffers empfangen worden sind?
Du müsstest im ersten Schritt einmal den Unterschied zwischen "C#" und "C" verstehen, du bist im falschen Unterforum (Zudem stellt sich die Frage warum deine Code-Tags Probleme bereiten - vielleicht solltest du ihnen jeweils eine eigene Zeile spendieren).
Ein Admin wird dich sicherlich verschieben.
Klingt für mich nach: Richtiger Gedanke, falsche Weg. Dadurch das Du autogenerierten Code von Hand schreibst entsteht kein tieferes Verständnis, es kostet lediglich unnötig viel Zeit die Du besser darin investieren würdest Dich mit tatsächlich interessantem Wissen auseinanderzusetzen. Du willst tiefer gehendes Verständnis? Dann arbeite lieber so ein Buch wie http://www.amazon.de/CLR-via-C-Developer-Reference/dp/0735667454/ref=dp_ob_title_bk durch...
Es gibt einen Grund warum gewisse Teile des Codes autogeneriert werden: Weil er banal und langweilig ist...
Gerade eine IDE wie Visual Studio hilft das Du dich auf das Wesentliche konzentrieren kannst weil die Umgebung Dir das banale abnimmt...