J'ai écrit la fonction ci-dessous pour sélectionner une chaîne numérique telle que 1,23,000.00 Dans WebBrowser, je piège Double_Click Event, puis passe la plage sélectionnée à la fonction ci-dessous. Disons que la sélection initiale était 000 et ma cible est de sélectionner la chaîne entière comme mentionné ci-dessus.Quel est le problème dans cette fonction C#
myRange=doc.selection.createRange()
myRange=SelectCSNumbers(myRange)
Je renvoie un objet Range à partir de la fonction ci-dessous. La question ici est
return tmpRange.duplicate();//here it should terminate
count++;
quand je retourne la plage finale cette méthode est appelée à nouveau se Comment je ne sais pas, Quelqu'un peut-il POINTOUT mon erreur.
private mshtml.IHTMLTxtRange SelectCSNumbers(mshtml.IHTMLTxtRange myRange) { mshtml.IHTMLTxtRange tmpRange = myRange.duplicate(); string[] strInt = tmpRange.text.Split(','); bool result = false; result = CheckText(tmpRange, strInt, result); if (result && count==0)// { //Expand the Range with a single Character tmpRange.expand("character"); if (tmpRange.text.Length > myRange.text.Length) { if (tmpRange.text.IndexOf(' ') == -1) //if no space is found that means the selection is not proper { //Check for ,/. if (tmpRange.text.IndexOf(',') == -1)//if NO Comma is found { if (tmpRange.text.IndexOf('.') == -1) { //EOS } else { //. is found SelectCSNumbers(tmpRange.duplicate()); } } else { SelectCSNumbers(tmpRange.duplicate()); } } else if (tmpRange.text.IndexOf(' ') != -1) { tmpRange = myRange.duplicate(); tmpRange.moveStart("character", -1); if (tmpRange.text.IndexOf(' ') == -1) //if no space is found that means the selection is not proper { //Check for ,/. if (tmpRange.text.IndexOf(',') == -1)//if NO Comma is found { if (tmpRange.text.IndexOf('.') == -1) { //EOS } else { //. is found SelectCSNumbers(tmpRange.duplicate()); } } else { SelectCSNumbers(tmpRange.duplicate()); } } } } else if (tmpRange.text.Length == myRange.text.Length) { tmpRange = myRange.duplicate(); tmpRange.moveStart("character", -1); if (tmpRange.text.Length == myRange.text.Length) { //tmpRange = null; return tmpRange.duplicate();//here it should terminate count++; } else if (tmpRange.text.IndexOf(' ') == -1) //if no space is found that means the selection is not proper { if (tmpRange.text.IndexOf(',') == -1)//if NO Comma is found { if (tmpRange.text.IndexOf('.') == -1) { //EOS } else { //. is found SelectCSNumbers(tmpRange.duplicate()); } } else { SelectCSNumbers(tmpRange.duplicate()); } } } } return tmpRange.duplicate(); }