ich hoffe ihr könnt mir hier etwas weiterhelfen. Ich möchte eine Datenbindung zwischen mehreren Pages erstellen. Ich habe auf der Seite "infos" eine Textbox. Auf meiner MainWindow Page soll ein Label den Inhalt der Textbox anzeigen. Mit unterschiedlichen Buttons kann man zwischen den Seiten wechseln.
Hier sind meine Codeteile: MainWindow.cs
public partial class MainWindow : Window
{
Person person1;
public MainWindow()
{
InitializeComponent();
person1 = new Person()
{
Name = "John Doe",
City = "CiytNumberOne"
};
this.DataContext = person1;
}
private void btnDashboard_Click(object sender, RoutedEventArgs e)
{
PageHolder.Content = new dashboard();
}
private void Infos_Click(object sender, RoutedEventArgs e)
{
PageHolder.Content = new infos();
}
}
Person.cs
class Person : INotifyPropertyChanged
{
private string _name;
private string _city;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public string City
{
get { return _city; }
set
{
_city = value;
OnPropertyChanged("City");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
Da das Datum dann trotzdem im falschen Format war, hab ich das o.g. NumberFormat gesetzt.
Das hab ich über ein Makro ausgelesen. Komischerweise ist dieses Format Tag.Monat.Jahr.
Also ich hab jetzt auf deinen Hinweis hin, den Code aus der OpenXML SDK kopiert, um zu testen, wie es hier läuft.
Auch auf diesem Weg hab ich genau das selbe Fehlerbild mit dem Filter.
Ich hab dazu unter Zelle formatieren geschaut. Dort gibt es ja Datumsformate. Hab mal einen Screenshot angehangen.
Mit deinem Vorschlag yyyy-mm-dd klappt es leider auch nicht.
Das ist so ärgerlich... Der Text steht eigentlich richtig drin, wird nur nicht korrekt erfasst von Excel
ich hänge an einem kleinen Problem, was ich mithilfe der Suche und Google leider nicht lösen konnte.
Ich habe ein kleines Programm geschrieben, was in einer Excel-Tabelle das aktuelle Datum einträgt. Dieses wird auch ohne Probleme eingetragen. Leider hat Excel hier aber ein Problem mit der Filterfunktion.
Diese trennt die einzelnen Datumsteile nicht auf. Um das kurz zu erklären:
Trägt man von Hand ein Datum ein, erkennt der Filter dieses und spaltet auf in Jahr, Monat und Tag. Dann kann man zum Beispiel alle Einträge aus 2020 anzeigen lassen.
Wenn ich mit meinem Programm das Datum eintrage, wird es als komplettes Datum im Filter angezeigt. Dies kann manuell behoben werden über einen Doppelklick und ein Enter in die entsprechende Zelle.
Das ist aber ein manueller Eingriff und eigentlich unerwünscht.
Ich habe das ganze schon versucht zu lösen mit NumberFormat, was aber leider auch nicht geholfen hat. Hier mal mein Codeausschnitt:
Im Anhang noch ein Screenshot von dem Filter. Die letzte Zeile davon sollte eigentlich oben mit einsortiert werden.
Ich hoffe ihr habt eine Idee und könnt mir helfen?
Du hast richtig getippt, ich arbeite mit XAMARIN.
Meinst du mit Elementen die Elemente der Liste?
Also ich habe ja eine Liste mit Personen. Diese Personen enthalten jeweils den Vor und Nachnamen und das Geschlecht.
Das heißt ich muss die Personen speichern?
Benötige ich dafür SQL?
Ich find leider nichts passendes für mich im Internet X(
Hallo zusammen,
ich habe mal wieder ein Problem bei einem meiner Projekte.
Ich möchte eine App mit einer ListView erstellen.
Diese ListView wird von Usereingaben gefüttert und soll nach dem Beenden der App bei einem erneuten Aufruf wieder zur Verfügung stehen. Die ListView besteht aus mehreren Objekten "Person".
Ich bin bei meiner Recherche auf die SharedPreferences gestoßen.
Hier kann man aber leider keine List speichern.
Oder doch?
Könnt Ihr mir hier weiterhelfen?
interessant ist. Hier scheint es so, als ob der Bereich dazwischen nicht existiert.
Gerade ist mir ausfgefallen, das wenn ich die Website untersuche und über den Debugger rein geh, sieht es identisch aus wie oben. Über den DOM-Explorer sind allerdings zwischen <div id="pilz-fts-search-results-container"> und </div> noch die Links, welche ich benötige 8o
ich benötige mal wieder eure Hilfe
Nach tagelanger Suche bin ich leider mit meinem Programm noch am Anfang, weil ich hier nicht weiter komme.
Ich möchte von einer Website alle Links auslesen.
Dies habe ich mit folgendem Code versucht:
private void button1_Click(object sender, EventArgs e)
{
var url = "https://www.pilz.com/de-DE/search#SEARCH=772100&pilz_group_type=";
var web = new HtmlWeb();
var doc = web.Load(url);
var node = doc.DocumentNode.SelectNodes("//*[@id=\"pilz-fts-search-results-container\"]/a[2]");
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id=\"pilz-fts-search-results-container\"]/a[2]"))
{
HtmlAttribute att = link.Attributes["href"];
if (att.Value.Contains("#"))
{
string[] substring = att.Value.Split('#');
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(substring[0]);
Console.ReadLine();
}
else
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(att.Value);
Console.ReadLine();
}
}
}
In der foreach-Schleife bekomm ich ein NullException-Error.
Deshalb habe ich die var node erstellt, um zu sehen ob ich null bekomme, was hier der Fall ist.
Könnt Ihr mir sagen was an dem XPATH nicht in Ordnung ist?
Im Sinne der Wiederverwendbar- und Testbakeit ist es besser, wenn Deine Methode keine Abhängigkeit an die UI und damit keine Abhängigkeit an die Textbox hätte; sondern wie meine Vorlage einen String annimmt und einen zurück gibt.
Du hast recht, das muss ich noch anpassen. Danke dir!
Mein Problem ist folgendes:
ich müsste Zeile für Zeile kontrollieren, ob mehr als 72 Zeichen stehen. Wenn ja dann sollen alle worte über 72 in die nächste Zeile geschrieben werden.
Ich hätte das jetzt mit foreach(string lines in TextBox1.Lines) gemacht.
Allerdings ist hier das Problem das ich dann lines nichts zuweisen kann.
private void textBox1_TextChanged(object sender, EventArgs e)
{
foreach (string lines in textBox1.Lines)
{
string[] zeile = lines.Split();
char[] buchstaben = lines.ToCharArray();
int count = 0;
int lastWord = 0;
if (buchstaben.Length > maxCount)
{
for (int i = 0; i < zeile.Length; i++)
{
if (count < maxCount)
{
count += zeile[i].Length;
}
else
{
lastWord = i;
break;
}
}
for(int i = 0; i < lastWord; i++)
{
gesamttext += zeile[i] + " ";
}
gesamttext += Environment.NewLine;
for(int i = lastWord; i < zeile.Length; i++)
{
gesamttext += zeile[i] + " ";
}
textBox1.Text = gesamttext;
}
}
}
Das hier ist mein aktueller Versuch, aber das klappt leider auch nicht so ganz :(
ich benötige mal wieder eure Hilfe,
ich komme einfach nicht weiter. Für ein Projekt benötige ich einen automatischen Zeilenumbruch. Das heißt ich schreibe in einer Multiline-TextBox meinen Text. Es sollen in jeder Zeile maximal 72 Zeichen stehen. Das heißt wenn ein Wort bei 70 anfängt und über 72 geht soll das ganze Wort in die nächste Zeile geschrieben werden. Leider bekomme ich das nicht hin. Habt ihr da einen Ansatz? Oder gibt es für TextBoxen schon Einstellungsmöglichkeiten für die maximale Anzahl pro Zeile?
ist zwar unwahrscheinlich, aber ist das ein frisch installierter SAP GUI 7.50? Dann könnte einmal neustarten ausreichen. Das Ding hat nach der Installation ein paar Grafikfehler, die nach dem Neustart aber weg sind.
Servus GarlandGreene,
nein ist nicht neu installiert
Wenn ich SAP normal starte, ist die Ansicht auch normal.
Das muss an dem Code liegen ;(
Du hast eine Konsolenapplikation erstellt, und darin läuft dann keine Nachrichtenbearbeitungsschleife (message queue).
Probiere mal z.B. eine WinForms-Applikation.
Habe ich auch schon versucht, leider ohne Erfolg. Echt ärgerlich ;(
Hallo zusammen,
ich bin grade dabei eine Verbindung von einer Userform ins SAP zu erstellen.
Mit meinem momentanen Code bekomme ich auch eine Verbindung, allerdings ist das SAP Fenster in einer komischen Ansicht (Buttons werden zum Beispiel nicht angezeigt) Siehe Screenshot. Weiß jemand woran das liegt?
Hier meine Main:
public static void login(string myclient, string mylogin, string mypass, string mylang)
{
GuiTextField client = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField");
GuiTextField login = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField");
GuiTextField pass = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField");
GuiTextField language = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField");
client.SetFocus();
client.Text = myclient;
login.SetFocus();
login.Text = mylogin;
pass.SetFocus();
pass.Text = mypass;
language.SetFocus();
language.Text = mylang;
//Press the green checkmark button which is about the same as the enter key
GuiButton btn = (GuiButton)SapSession.FindById("/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]");
btn.SetFocus();
btn.Press();
}
public static void openSAP(string env)
{
SAPActive.SapGuiApp = new GuiApplication();
string connectString = null;
if (env.ToUpper().Equals("DEFAULT"))
{
connectString = "R3Q ECC Testsystem EHP8";
}
else
{
connectString = env;
}
SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(connectString, Sync: true);
SAPActive.SapSession = (GuiSession)SAPActive.SapConnection.Sessions.Item(0); }
Die Buttons sind allerdings vorhanden. Wenn man lange genug mit der Maus über dem Button sit, erscheint ein Tooltip und der Button funktioniert dann auch. Ich hab ehct keine Ahnung woran das liegt :(
Interessanter Code.... da scheint jemand (vermutlich ein Kollege von Dir..?) von einer anderen Programmiersprache zu kommen und versucht dortige Muster auf C# umzumünzen ;-)
)
Videotutorial Ich wollte den Code jetzt etwas anpassen aber komm hier nicht weiter
Zitat von Abt
Was für Dich eine "Hauptklasse" ist weiß ich nicht
Ich meinte damit nur die Klasse meiner Hauptuserform
Zitat von Abt
Wo auch immer das Image Objekt verwaltet wird; wird wohl nicht richtig verwaltet.
Die ImageToString Methode und SetGeneralVars sitzen beide in der 2. Klasse.
Das Bild wird in der Hauptklasse geöffnet und in eine Variable gespecihert und dann über SetGeneralVars an die zweite Klasse übergeben.
ich habe leider mit meinem Code ein kleines Problem und komme nicht weiter.
Ich habe eine Userform mit mehreren Buttons. Dazu eine PictureBox
Das Bild wird wie folgend hochgeladen:
Drücke ich auf den Button Save wird das Bild in einen String umgewandelt und zusammen mit den Infos aus den Textboxen in einer Datei gespeichert:
private string ImageToString(Image img, ImageFormat imgFormat)
{
string sImg;
MemoryStream MS = new MemoryStream();
img.Save(MS, imgFormat); //Hier tritt der Fehler auf!!!!
sImg = Convert.ToBase64String(MS.ToArray());
MS.Close();
return sImg;
}
Über einen Öffnen Button kann ich jetzt die Inhalte der Textboxen und der PictureBox wieder mit den Inhalten der Datei befüllen. Drücke ich jetzt direkt wieder auf Speichern (weil ich irgendwelche Textboxen geändert habe) bekomme ich den im Titel genannten Fehler. Wenn ich aber erneut ein Bild auswähle bekomme ich diesen Fehler nicht.
Löscht man die Zeile fs.Close(); oder kommentiert sie aus, verschwindet der Fehler.
herbivore
Das Problem sit, das ich dieseLÖsung nicht nutzen kann, weilin dem Code kein fs.close() vorhanden ist :(
Aber ich werde nochmal ein neues thema mit meinem code eröffnen. Vllt reden wir ja auch aneinander vorbei :)
Hallo zusammen,
kann mir jemand weiterhelfen? Ich habe eigentlich den identischen Code wie oben beschrieben und auch das identische Fehlerbild. Leider hilft es auch nichts den MemoryStream offen zu halten. Also wenn ich die Zeile MS.Close() auskommentiere tritt der Fehler immernoch auf.