Laden...

Forenbeiträge von csharp_benutzer Ingesamt 20 Beiträge

04.07.2016 - 12:12 Uhr

Ich meinte, ohne dass die jewelige Klasse was an der Signatur ändern muss.

Wir dürfen an der Klasse, die das Interface implementiert, keine Änderungen mehr vornehmen.

04.07.2016 - 11:52 Uhr

Hallo,

ich brauche dringend euere Hilfe.

Ich habe ein Interface, das aus 2 Methoden besteht


public interface IDataProvider
{
 void TestMethod1(string lastName, string firstName);
 void TestMethod2(string lastName);
}

Wie kann ich nun ermöglichen, dass die TestMethod1 optional wird. Dass die jeweilige Klasse nicht unbedingt TestMethod1 implementieren muss.


public interface Provider: IDataProvider
{
 void TestMethod2(string lastName){}
}

Vielen Dank für euere Unterstützung.

02.10.2015 - 12:44 Uhr

Der Workflow sieht genauso aus wie dargestellt. Nur die Methoden sind bei mir ausgeschrieben.

02.10.2015 - 12:15 Uhr

Ich habe folgende Konstellation:


private void HandleRequest()
{
     var task1 = Task.Factory.StartNew(() => ForwardRequest());
     task1.ContineWith(t => AfterTask1());
}

// Methode in eine andere Schnittstelle
private void ForwardRequest()
{
     var task2 = Task.Factory.StartNew(() => StartDialog());
     task2.ContineWith(t => AfterTask2());
}


Mein Problem ist, dass der ContinuationTask "AfterTask1" sofort ausgeführt wird, sobald die Methode ForwardRequest zu Ende ist. Es wird nicht auf die Ausführung von ContinuationTask "AfterTask2" gewartet.

Wie kann ich erreichen, dass "AfterTask1" nur dann ausgeführt wird, wenn der ContinuationTask "AfterTask2" fertig ist.

Danke im Voraus für euere Hilfe.

10.04.2015 - 09:58 Uhr

Hab das Problem gelöst:

PrintDocument.DocumentName hat standardmäßig den Wert "document". Deswegen wurde im Seitenansichtdialog auch "Seite 1 von document." angezeigt.

Einfach den gewünschten Dokumenten-Namen in der Property PrintDocument.DocumentName setzen.

10.04.2015 - 09:28 Uhr

Hallo,

PrintPreviewDialog.ShowDialog() => zeigt ja die Vorschau des PrintDocuments an.

Bevor die Vorschau generiert wird, wird dem Benutzer noch ein "Seitenansicht-Dialog" angezeigt. (Siehe Anhang)

Ich möchte, dass entweder dieser Dialog gar nicht angezeigt wird, oder den Text des angezeigten Dialogs ändern:

Aktueller Text : Seite 1 von document.
Gewünschter Text : Seite 1 von Dokument.

Wäre super, wenn jemand von euch mir dabei helfen könnte.

11.12.2014 - 15:34 Uhr

Das ist eine gute Idee. Werde ich ausprobieren.

11.12.2014 - 14:26 Uhr

Hallo,

von einer unseren Schnittstelle bekomme ich die Daten im XML-Format.

Beispiel:


<Person>
  <ID>100</ID>
  <Vorname>Max</Vorname>
  <Nachname>Mustermann</Nachname>
  <Anschrift>81775BerlinerStrasse11Muenchen</Anschrift>
</Person>

Die XML-Daten kann ich ja mit Hilfe von XML-Serializer in Person-Objekt deserialisieren. Das Problem bereitet mir aber die Information zur Anschrift, die ich einfach in String verkettet bekomme. Ich möchte die Information zur Anschrift in ein weiteres Anschrift-Objekt deserialisieren, sodass das Anschrift-Objekt ein Teil meines Person-Objekts ist:


public class Person
{
   public string ID {get; set;}
   public string Vorname {get; set;}
   public string Nachname {get; set;}
   public Anschrift Anschrift {get; set;}
}

public class Anschrift
{
   public string PLZ {get; set;}
   public string Strasse {get; set;}
   public string Ort {get; set;}
}

Die Beschreibung zu den einzelnen Bausteinen des Anschrift-Feldes besitze ich. (Position 1-5 PLZ, Position 6-80 Strasse usw.)

Wie könnte ich die mir vorliegenden XML-Informationen am besten deserializeren bzw. wie weise ich den XML-Serializer an, dass die Anschrift als separates Objekt zu deserialisieren ist.

04.04.2014 - 14:11 Uhr

Du musst unbekannte Typen dem Serializer bekannt machen.

var xmlSerializer = new XmlSerializer( typeof( TestClass ), new Type[ ]  { typeof( Book ) } );  

hat leider nicht geholfen...

04.04.2014 - 14:01 Uhr

Hier ist der Code für Serialize (testClassData ist ein Objekt von TestClass)



var xmlWritterSettings = new XmlWriterSettings();
xmlWritterSettings.OmitXmlDeclaration = true;
xmlWritterSettings.Indent = true;

var xmlSerializer = new XmlSerializer(typeof(TestClass));
var xmlnsEmpty = new XmlSerializerNamespaces(new[] { new XmlQualifiedName(String.Empty, String.Empty) });

string serializedString = string.Empty;

using (var stringWriter = new StringWriter())
using (var xmlWriter = XmlWriter.Create(stringWriter, xmlWritterSettings))
{
      xmlSerializer.Serialize(xmlWriter, testClassData, xmlnsEmpty);
      serializedString = stringWriter.ToString();
      stringWriter.Close();
}


Hier ist der Code für Deserialize:



var xmlSerializer = new XmlSerializer(typeof(TestClass));
TestClass testClassData;

using (var stringReader = new StringReader(xmlString))
{
       testClassData= (TestClass)xmlSerializer.Deserialize(stringReader);
       stringReader.Close();
}


Beim Deserialisieren wird die Liste von Books nicht mit Daten gefüllt, obwohl ich welche in Xml-String habe.

Ich habe gerade noch was probiert: wenn ich statt List ein Array verwende, dann wird Books doch mit Daten befüllt. Ich würde aber gerne List verwenden, weil es einfacher zu handhaben ist.

04.04.2014 - 13:25 Uhr

Hallo,

der Xml-Serializer serialisiert mir folgende Klasse problemlos. Aber beim Deserialisieren wird die Liste von Books nicht befüllt (null value).

Könnt ihr bitte einen Blick werfen, ob ich meine Klasse falsch konfiguriert habe?



[XmlRootAttribute("Test")]
public class TestClass
{
        [XmlElement("Name")]
        public string Name { get; set; }

        [XmlElement("Id")]
        public string Id { get; set; }

        [XmlArray("Books")]
        [XmlArrayItem("Book", typeof(Book))]
        public List<Book> Books { get; set; }
}

public class Book
{
        [XmlElement("Title")]
        public string Title { get; set; }

        [XmlElement("Author")]
        public string Author { get; set; }

}

24.03.2014 - 16:49 Uhr

Hallo,

die Controls in meinem Form (WinForms) sind über DataBindings gebunden.

Um zu verhindern, dass die Werte sofort in das Binding-Objekt geschrieben werden, benutze ich "DataSourceUpdateMode.Never"

Beispiel:

txtCustomerId.DataBindings.Add("Text", customerBinding, "CustomerID", true, DataSourceUpdateMode.Never);

Die Form enthält zusätzlich Ok und Cancel Button.

Nun möchte ich, dass die Änderungen bei Betätigen des Ok-Buttons automatisch zum Binding-Objekt (customerBinding) übertragen werden.

Wie kann ich das realisieren? Für jede Hilfe wäre ich dankbar.

30.01.2014 - 09:32 Uhr

Gibts doch nicht! Das lag tatsächlich daran und ich war schon am Verzweifeln. Vielen Dank für deine Hilfe.

Lösung:

Bottom -1

oder

Padding bei Bottom auf 1 setzten

30.01.2014 - 09:00 Uhr

Hallo,

ich habe ein TableLayoutPanel, das aus 2 Rows und aus 2 Columns besteht (=4 Zellen)

Bespiel:
a b
c d

Nun möchte ich jeweils unter a, b, c und d eine Linie als Rahmen haben.
Mit folgender Code habe ich den Rahmen unter a und b hinbekommen:


        private void tableLayoutPanel2_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
        {
            e.Graphics.DrawLine(new Pen(Color.Blue), new Point(e.CellBounds.X, e.CellBounds.Bottom), new Point(e.CellBounds.Right, e.CellBounds.Bottom));
        }

So schaut das Ergebnis aus:

a b

c d

Ich erwarte eigentlich, dass mir der selbe Code auch einen Rahmen unter c und d einfügt. Das tut er aber nicht. Was mache ich falsch? Für jede Hilfe/Verbesserung würde ich mich sehr freuen.

Das Ganze soll so ausschauen:

a b

c d

04.04.2013 - 11:56 Uhr

Das Anlegen von ein paar Controls in einem Panel dauert millisekunden, wenn nicht läuft da irgendwas auf deiner Seite falsch.

Also was Sind das für Controls und was machst du da wirklich?

Es sind normale Text und Comboboxes.

wenn das Form zerstört ist, sind die Controls weg. Wenn man das Form später wieder anzeigen will, muss man die Controls (zur Laufzeit, also dynamisch) neu erzeugen. Da führt kein Weg daran vorbei. Selbst wenn das mit dem Serialisieren gehen würde (was es nicht tut), wäre das ja nur eine andere Art, die Controls dynamisch zu erzeugen. Würde also per se auch nicht schneller gehen.

Danke, ich denke auch, dass ich nicht darum herum komme. Ich muss halt mal schauen, welcher Vorgang verursacht die kleine Verzögerung.

Vor dem Wegschmeissen des Forms machst Du ein Form.Controls.Remove(Panel).

Wenn Du ein neues Form brauchst, wieder Form.Controls.Add(Panel).

Ich finde hier keinen Bezug zu meiner Frage. Die Form-Instanz existiert ja nach der Beendigung des Moduls nicht mehr. Vielleicht habe ich micht nicht verständlich genug ausgedrückt.

Danke an alle!

03.04.2013 - 16:45 Uhr

Das Formular ist ein Bestandteil eines Moduls. Das heißt, dass beim Verlassen des Moduls wird die Instanz des Formulars zerstört.

Und ich möchte, dass beim nächsten Aufruf des Moduls ich die Controls in meinem Formular (bzw. im Panel) nicht wieder dynamisch erstellen muss.

03.04.2013 - 16:01 Uhr

Hallo,

ich habe ein WindowsForm, welches aus einem Panel besteht.
In dem Panel platziere ich meine Controls dynamisch.

Das Problem ist, dass bei jedem Aufruf von meinem Formular es genauso lange dauert, weil die Controls immer wieder dynamisch generiert werden.

Um an Geschwindigkeit zu gewinnen, würde ich gerne mein Panel beim Ersten Aufruf mit allen dynamisch erstellten Controls wegspeichern und beim nächsten Aufruf wieder als "fertiges" Control verwenden.

Panel und Controls sind aber leider nicht Serializable und Cloneable.

Würde mich auf Ihre Ideen sehr freuen.

21.02.2013 - 15:04 Uhr

SelectedIndexChanged wurde ja bei mir augerufen, aber nur wenn ich debugge.
Ich möchte, dass SelectedIndexChanged event immer gefeuert wird. Nicht nur bei Debug.

Irgendwelche Tipps?

21.02.2013 - 13:20 Uhr

Hallo,

ich habe eine ComboBox mit DataTable gebunden.
Zur Laufzeit aktualisiere ich den RowFilter meiner ComboBox je nach Benutzerinput.


               DataView myFilteredView = (DataView)this.MyComboBox.DataSource;
                myFilteredView.RowFilter = this.m_visibleColumnName + " LIKE '" + this.MyTextBox.Text + "%'";

Wenn ich meinen Code debugge, dann wird nach RowFilter SelectedIndexChanged aufgerufen, aber ohne Debug wird SelectedIndexChanged nicht gefeuert.

Auch bei manuellem Aufruf der SelectedIndexChanged habe ich denselben Effekt! Mit Debug = ja, ohne Debug = kein Aufruf!

Ich bitte um Hilfe!

Edit:
Wenn ich nach RowFilter mein eigenes Event aufrufe, dann wird nach dem Aufruf meines Events immer im Anschluss SelectedIndexChanged augerufen.


               DataView myFilteredView = (DataView)this.MyComboBox.DataSource;
                myFilteredView.RowFilter = this.m_visibleColumnName + " LIKE '" + this.MyTextBox.Text + "%'";

// eigenes Event
RaiseMyEvent();


Das ist echt zum Verzweifeln.

18.02.2013 - 23:25 Uhr

Hallo,

ich habe ein eigenes UserControl erstellt. Dieses Control enthält unter Anderem eine ComboBox.

Anchor auf ComboBox: Top, Bottom, Left, Right
Dock: None

Wenn ich jetzt dieses UserControl auf meine WinForm platziere und die Größe ändere, passt sich die Größe der darin enthaltene ComboBox auch an.

Wenn ich aber das WinForm starte, läuft mein UserControl über das Formular hinaus, und die rechte Rand der ComboBox ist abgeschnitten.

Kommt so rüber. als ob Right anchoring zur Laufzeit nicht hinhaut.

Ich wäre für jeden Tipp sehr dankbar.