Dann merk dir doch pro Zelle mit Hilfe eines zusätzlichen Aufzählungstyps was für eine Grafik drin ist und lege es beispielsweise im DataGridViewCell.Tag ab.
da hast Du recht. Ich hatte ein Problem mit Xml-Datei gehabt.Die waren unterschiedlich.
Beim Selektieren hatte ich die Daten in einer DataTable und dann in meiner DataSet (ds1)exportiert, danach die xml-Datei generiert, und am Ende in ReportViwer exportiert. Ich hatte in der DataTable keine Spalten(Namen) definiert, hatte nur die Daten exportiert, das was.
Dank Dir.
Ups. Kleiner Umbenennungsfehler. Das Phänomen bleibt aber trotzdem bestehen. (Ist der StringBuilder bei dir wirklich null oder war das nur die Vermutung aufgrund der falschen Variable? Denn null wäre ja erst recht falsch, da man erwartet, dass der StringBuilder deserialisiert wird.)
Korrigierter Code:
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
namespace ConsoleApplication3
{
[Serializable]
class Test : ISerializable
{
[Serializable]
private class InnerData
{
public StringBuilder Builder = new StringBuilder();
public string Str;
}
InnerData Data = new InnerData();
public Test() { }
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
Data.Builder.Append("Test 1");
Data.Str = "Test 2";
info.AddValue("Data", Data);
}
private Test(SerializationInfo info, StreamingContext context)
{
Data = (InnerData)info.GetValue("Data", typeof(InnerData));
Output("ctor(SerializationInfo, context), nach info.GetValue");
}
public void Output(string where)
{
Console.WriteLine(where + ":");
Console.WriteLine("Builder: " + (Data.Builder == null ? "Ist null" : Data.Builder.ToString()));
Console.WriteLine("String: " + (Data.Str ?? "Ist null"));
Console.WriteLine();
}
}
class Program
{
static void Main(string[] args)
{
Test test = new Test();
using (Stream stream = File.Open("Test.txt", FileMode.Create))
{
new BinaryFormatter().Serialize(stream, test);
}
using (Stream stream = File.Open("Test.txt", FileMode.Open))
{
Test test2 = (Test)new BinaryFormatter().Deserialize(stream);
test2.Output("Main, nach Deserialize");
}
Console.ReadLine();
}
}
}
Das habe ich leider befürchtet. Ärgert mich ein wenig das ich mich nicht schon früher dmait beschäftigt habe auch bei kleineren Programmen und somit schonmal einen leichten Einstieg zu haben.
Mich wundert nur das Google keine Antwort liefert. Ich kann doch net der erste Mensch auf der Welt sein der sowas gemacht hat Bzw. machen will.
Ich danke dir erstmal, jetzt werd ich mir en Programm suchen und wie du mir geraten hast mich damit genau zu beschäftigen.
MfG snowfey
Prinzessin Sofia schrieb:
Warum dieser Quatsch mit short?
TextBox lastTextBox = null;
textBox1.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
textBox2.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
textBox3.LostFocus += new EventHandler(ForAlltextBoxes_LostFocus);
void ForAlltextBoxes_LostFocus(object sender, EventArgs e)
{
lastTextBox = sender as TextBox;
}
Wie lastTextBox initialisiert wird, ist anwendungsabhängig.
Das mit dem Short war ja nur ne Idee
Ach, so funktioniert das mit dem LostFocus. Ich probier das gleich mal.
Hallo, ich hab folgendes Problem.
Ich möchte ein XML Dokumen erstellen über das ich Werte einlesen möchte.
Das ganze geschieht so das ich ein XSD Dokument erstelle welches ich per XSD.exe zu einer Klasse mache die ich dann entsprechend Deserialisieren kann. Soweit so gut. Klappt auch eigentlich ganz gut. Nun hab ich aber folgendes Problem.
Ich möchte eine Menge von Elementen im XML beschreiben bei dem die Reihenfolge wichtig ist.
<Element1>
<SubElementType1> ..Daten für den Type.... </SubElementType1>
<SubElementType2> ..Daten für den Type.... </SubElementType2>
<SubElementType1> ..Daten für den Type.... </SubElementType1>
<SubElementType3> ..Daten für den Type.... </SubElementType3>
</Element1>
Im Programm möchte ich genau die Elemente genau in dieser Reihenfolge auswerten.
Definier ich SubElementType1 - 3 als Sequence werden die ja in der Reihenfolge angefordert und kommen als Array zurück. Das bringt dann also die Ordnung des XML Dokuments durcheinander und ist dann nicht mehr auswertbar.
witte schrieb:
GGG1 schrieb:
Aber das hier ist doch ein Auto-Property. Das heißt, hinter dem steht implizit eine Variable.
Der Name dieser Variablen ist aber nicht bekannt.
Genau das ist ja die Ironie: Wenn die Klasse serialisierbar ist, wird das Ding bei der Serialisierung automatisch mitgenommen. Es von der Serialisierung ausschließen ist dagegen nicht möglich.
Hi witte,
ja wenn ich den Designer dafür verwende funktioniert es.
Wollte es eigentlich gerne im Code implementiert haben um nachher eine Möglichkeit zu schaffen das ganze flexible zu gestalten, unabhängig von der Quelle oder von den Daten (Spalten).
Aber gut, werde es erst einmal dabei belassen.
Danke für deine Antwort.
Gruß
str n00b schrieb:
CSL schrieb:
1. Strings sind immer imutable
macht ja nichts, ich kann doch einer statischen string variable trotzdem verschiedene 'imutables' zuweisen.
Du willst eine referenz eines Strings in einer liste und dem string woanders was zu weisen und das in der Liste soll sich mit ändern, right? Das geht eben nicht da du bei der zuweisung einen neuen string erstellst, da imutable, dh dein string in der liste wird immer der alte bleiben, so lange bis du ihn explizit zuweist oder ihn in eine klasse schachtelst wie ich oben zeigte.
str n00b schrieb:
CSL schrieb:
2. Ein Key darf nur einmal existieren
weiß ich, der key soll sich ja nicht ändern, sondern nur der wert.
Du schriebst doch:
str n00b schrieb:
strings[a_string] = "another string";
zugewiesen. nun soll auch a_string 'automatisch' diesen wert bekommen.
Und das verstand ich so das der key auch ausgetauscht werden soll. Kann mich aber auch täuschen
str n00b schrieb:
CSL schrieb:
3. Doofe idee
nö, ganz im gegenteil. es geht darum weniger code bei der erneuten zuweisung schreiben zu müssen, weil ich von den a_string's ein paar dutzend vorliegen habe. mit c und c++ würd ich das mit zeigern hinbekommen, aber in c# weiß ich zurzeit noch nicht wie. vllt. iwie mit unsafe code, mal schauen
Verpacke doch deine "Dictionary" in ein eigenes Objekt umd erlaube lesen und schreiben nur über zwei Methoden (meinetwegen ein Property) und der sorgt dafür das alles korrekt abläuft, dann hast auch auch immer nur ein single point of entry.
Ich find die idee aber auch doof weil du so mal eben schnell böse Seiteneffekte bekommen kannst.
Die Sache ist ja ganz einfach die:
strings[a_string] = "another string";
du sagst da nicht "der string ist nun "another string", sondern du sagst "die gespeicherte referenz zeigt nun auf den "another string" im Speicher.
Der String worauf die Referenz vorher zeigte existiert noch weiterhin im Speicher, da deine interne liste darauf Zeigt.
-> C# ist eine eigene Sprache, man löst Sachen nicht so wie man es aus anderen Sprachen gewohnt ist also lass disen Unsafe Quatsch, wenn du es wie in C++ lösen willst kannst du auch in C++ bleiben.
Hab's hin bekommen. Hätte ich auch selbst drauf kommen können
private void rdcmdServerD_CheckedChanged(object sender, EventArgs e)
{
txtApplicationD.Visible = rdcmdServerD.Checked;
lblApplicationD.Visible = rdcmdServerD.Checked;
txtDescriptionD.Hide();
lblDescriptionD.Hide();
txtSwitchportD.Hide();
lblSwitchportD.Hide();
}
Geht super.
das ist zumindest nicht die feine art..
http://c-plusplus.net/forum/viewtopic-var-p-is-1962801.html
http://c-plusplus.net/forum/viewtopic-var-p-is-1962763.html
poste es doch bitte nur in eine "rubrik" - zum beispiel in rund um die programmierung oder ausbildung.
so gibt es ein posting gewirr und viel verschwendete zeit und doppelte argumente.
und was schätzt du werden die leute in den entsprechenden subforen empfehlen?
Also den zweiten Fall hast du ja anscheinend gelöst. Du kannst eine Datei, zeitgleich mehrmals kopieren. Das wolltest du doch!?
Und beim ersten willst du wohl prüfen, ob der Benutzer nur Leserecht hat? Nicht ob die Datei in Zugriff ist?
Um Rechte abzufragen, solltest du mal GetAttributes probieren.
Ich hab gerade selber eine Lösung gefunden glaube ich, obwohl ich bezweifel das es nicht die optimale ist:
con.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
dgvServer.Rows.Add(
reader["ip"],
reader["application"],
reader["name"]);
}
reader.Close();
con.Close();
EDIT:
Habe den Code ein paarmal getestet und es geht ganz gut mit dieser Lösung. Würde mich trotzdem interessieren ob ihr noch bessere oder optimiertere Lösungen kennt?
Hallo Experten,
stimmt, die Fehlermeldung ist logisch.
Also folgende Situation:
Ich habe in einer C# - WPF- Applikation eine "normale", eigene Win32 Standard- DLL eingebunden, die ihrerseits die MFC verwendet (historisch) und dort also Ausnahmen behandelt. Bisher habe ich diese Ausnahmen innerhalb der DLL behandelt. Ich habe in einem try{}- Block einen Fehler festgestellt und darauf hin eine eigene Ausnahme mit throw(MVHW_IMGSZ_ERR) geworfen, die ich innerhalb der Funktion mit catch(DWORD nErr) {} aufgefangen und behandelt habe.
Jetzt komme ich also bis zum throw(), lande aber nicht im catch(), sondern bekomme von "ganz oben" die Fehlermeldung...
Eine nicht behandelte Ausnahme des Typs "System.Runtime.InteropServices.SEHException" ist in WindowsBase.dll aufgetreten. Zusätzliche Information: Eine externe Komponente hat eine Ausnahme ausgelöst.
Frage:
Wie kann ich verhindern, dass mir wahrscheinlich die Applikation die Fehlerbehandlung wegnimmt?
Ich danke Euch im Voraus für Eure Antworten.
Den Code übernehmen nach da?
WCF ist ja ein Sammelsorium an Diensten. WebDienste(z.b.SOAP), Windows-Dienste etc,
Ich denke Du hast einen Windowsdienst genommen und der müsste
installiert/registriert werden am System. Da solltest zu mal mehr zum
Stichwort "Verteilte Anwendungen" lesen.
Für Silverlight nimmt man aber eher Webdienste. Silverlight ist für das
Web ausgelegt und ist rein Clientseitig.
Was hast du denn vor?
Installer schrieb:
[...]keine Kontrolle. [...]nichtmal über den Installationspfad.
Hi Installer,
deine Kritik ist berechtigt. Genau aus diesem Grund würde ich auch gerne auf die "Veröffentlichen" Funktion verzichten. Leider ist Verwendung dieser Funktionalität fester Bestandteil unseres Unternehmens und ich kann leider nicht darüber entscheiden (darauf zu verzichten).
Somit komme ich um einen Workaround wohl nicht drumherum.
Gruß