Kannst du mir helfen herauszufinden, wie der vorherige Text in den Textkasten eingefügt werden kann, und der tatsächliche Inhalt ist gleich?Wie kann man wissen, ob das vorherige Einfügen in das Textfeld dem tatsächlichen Einfügen entspricht?
Zum Beispiel, wenn ich "Wort 1" in das Textfeld einfüge, dann gebe es ein, und nach dem Einfügen von "Wort 2" passiert nichts, aber wenn ich "Wort 1" nach "Wort 1" wieder einfüge, Ich muss es wissen.
Vergleich von aufgezeichneten und eingegebenen Zeilen macht in diesem Fall keinen Sinn, weil ich String nicht immer in die Textdatei speichern, aber ich möchte wissen, ob String mit tatsächlichen Einfügen und vorherigen Einfügen Vergleich ist, auch wenn Zeile existiert nicht in Datei.
Ich brauche einen Wert, der zwischen zwei tatsächlichen und früheren Einfügungen existiert und wenn vorherige Einfügung gleich der tatsächlichen Einfügung ist, zeige diese Tatsache an, annulliere den Wert, aber wenn die tatsächliche Einfügung anders ist, entferne diesen zeitlichen Wert.
Ich bin mir nicht sicher, wie man dieses Ergebnis für die tatsächliche Einfügung mit Textbox richtig erhalten, wie man über Gleichheit für den nächsten und vorherigen Einsatz weiß.
Ich bin sicher, dass mein Versuch ist schlecht, und wahrscheinlich falsch, und meine Frage wäre so schlecht bewertet werden, aber trotzdem:
Ich versuche tatsächliche Zeichenfolge Datensatz mit 0 Index in die Liste hinzuzufügen, dann, wenn Der nächste Istwert ist gleich dem String in dieser Liste, macht den Feldvariablenwert gleich 1 und löscht die Liste, andernfalls löscht er die Liste und annulliert den Feldvariablenwert. Wenn die Feldvariable nicht gleich Null ist, Anzeige "Wiederholen des vorherigen Einfügens" und den Wert der Feldvariablen annullieren, löschen Sie die zeitliche Liste.
aber scheint, wie der Vergleich der actStr
und Listen-Datensatz rpt[0]
es nicht Vergleich frühere und aktuell ist, sondern nur tatsächlich mit dem tatsächlichen, so dass es nicht richtig funktioniert funktioniert, am absolut falschen Weg sieht aus wie es zu tun:
List<string> rpt = new List<string>();
string tempRptCheck = actStr;
rpt.Insert(0, tempRptCheck);
if (actStr == rpt[0])
{
rptVal = (rptVal = 1);
rpt.Clear();
}
else
{
rptVal = (rptVal = 0);
rpt.Clear();
}
if (rptVal > 0)
{
Console.WriteLine("Repeat of previous insert");
rptVal = (rptVal = 0);
rpt.Clear();
}
um wieder klarer zu sein:
ich möchte Benachrichtigung im Falle, wenn tatsächliche Eingang zur vorherigen Eingabe, zum Beispiel gleich ist:
Insert Textbox ist eine Zeichenfolge „word1“, drücken Sie die Eingabetaste weiter verarbeiten. Also muss es in der Liste aufgezeichnet werden, und wenn die folgende Einfügung gleich dieser vorherigen Einfügung ist, mit demselben "word1", benachrichtige mich über diese Gleichheit, entferne diese Zeichenkette von der Liste und ändere sie in tatsächliches "word1", und wenn als nächstes Einfügen wird gleich wieder sein, mach dasselbe.
Aber wenn insert "word1" ist, muss es in diese Liste aufgenommen werden, und wenn die folgende Einfügung ungleich dieser vorherigen Einfügung ist, entferne diese Zeichenfolge aus der Liste und ändere sie in tatsächliches "word2", um einen solchen Fall zu vermeiden Wenn insert ist "word1", und folgende Einfügung ist "word2" nicht gleich zu diesem vorherigen, und dann nächsten folgenden einfügen ist "word1" wieder gleich vor dem letzten, sollte es nicht als Wiederholung betrachtet werden.
Also ich will Benachrichtigung der Wiederholung nur zwischen tatsächlichen und vorraus, oder anders gesagt tatsächlichen und nächsten Inserts bekommen.
mehr klar sein, ich will genau diese Logik, die nur mit Konsolenanwendung mit dem gewünschten Ergebnis funktioniert:
static void Main(string[] args)
{
var words = new List<string>();
while (true)
{
Console.Write("Add word: ");
var input = Console.ReadLine();
if (words.Contains(input))
{
Console.WriteLine($"{input} is already in the list!");
continue;
}
words.Clear();
words.Add(input);
}
Console.ReadLine();
}
aber es hat funktioniert nicht mit Textbox, bekam ich gleiches Ergebnis wie mit dem Code oben: Jeder Anfrage als bereits vorhanden. And while (true)
Schleifen im endlosen Zyklus, weil das gleiche hier passiert, ist tatsächlich gleich.
Auch habe ich auf diese Weise versucht, über wiederholte Text passieren Wertvariable rpt
Feld aber es funktioniert nicht funktioniert:
string OldText = string.Empty;
private void textBox1_GotFocus(object sender, EventArgs e)
{
OldText = textBox1.Text;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
string newText = textBox1.Text;
if (newText == OldText)
{
rpt = (rpt = 1);
}
else
{
rpt = (rpt = 0);
}
}
nicht sicher für UI, was Sie verwenden? Winformen? ASP.net? Sie können eine statische Variable erstellen und für das Ereignis textbox_changed (im Fall von winforms) oder onblur (wenn Sie js verwenden) den aktuellen Wert des Textfelds mit der statischen Variablen vergleichen. Hoffe, dass hilft! –
@Dirty Entwickler Hallo, winforms. Ich habe versucht mit textbox_changed Event ist es jetzt zeigen, habe ich meine Frage bearbeitet, aber immer noch nicht herausfinden –
Was sind die "Doppel-Zuweisungen (' rpt = (rpt = 1) ') gut für? Im Zweifelsfall vergleichen 'string's (Objekte im allgemeinen) mit' .Equals' ('object.Equals (x, y)', wenn weder _known_ noch 'null' ist. – greybeard