2017-05-22 3 views
2

J'essaie de faire bouger TextBox, pour les mises à jour Rss, mais le problème est que le texte Rss est également en hébreu en anglais et aussi des chiffres, donc à chaque fois qu'il atteint le nombre, il commence à devenir fou :)C# droite à gauche dans TextBox

exmaple Rss = « * Ynet - * briser Nouvelles * visite Trump: le président américain a décollé de l'Arabie Saoudite à Israël * 15 ans de prison homme blanc Breda tué dans un combat en mer Thaïlande il y a quatre ans *: 24 blessés dans une explosion à Bangkok hôpital * des dizaines prisonniers de sécurité gréviste de la faim ont été évacués vers les hôpitaux de la Et dispersés en prison * En raison visite Trump: sera trains renforcé pour et de Jérusalem * Corée du Nord: incapable de commencer la production en série des missiles balistiques qui peuvent atteindre le Japon * Rapport Liban: Trump et al-Sisi convenu au sommet d'un plan de paix régional dans les prochaines semaines * Deux \ « H: plus cent mille employés du secteur public ont été mis à pied depuis la tentative de coup en Turquie * prévisions: chaud et sec * unseasonably grande surprise NBA: Boston a battu Cleveland, réduit à 2: 1 dans la série «

public void Run_Ynet_Rss() 
{ 
    Ynet_Rss.Text = ""; 
    foreach (string s in (Rss) 
    { 
     Ynet_Rss.Text = Ynet_Rss.Text + " * " + s; 
    } 
    Ynet_Rss.TextAlignment = TextAlignment.Right; 
} 
public void Update_Ynet_Rss() 
{ 
    if (Ynet_Rss.Text == "") 
    { 
     Run_Ynet_Rss(); 
    } 
    Ynet_Rss.Text = Ynet_Rss.Text.Substring(1); 
    Ynet_Rss.TextAlignment = TextAlignment.Right; 
} 

Bien sûr, il est un DispatcherTimer qui déclenche la fonction Update_Ynet_Rss tous quelques instants

+0

Juste une opinion non fondée: essayer RichTextBox. – ZloyMakak

+0

Je soupçonne que le problème est avec l'encodage. L'hébreu est unicode (deux octets), alors que les chiffres sont ASCII (un octet). Caractère/cordes sont deux objets d'octets avec une propriété privée dans la classe pour indiquer si le caractère est un ou deux octets. La fonction RSS ne gère pas correctement l'encodage. – jdweng

Répondre

2

Après un peu de réflexion, je trouve le problème .. et voici la solution:

 public void Update_Ynet_Rss() 
    { 
     if(Ynet_Rss.Text == "") 
     { 
      Run_Ynet_Rss(); 
     } 
     // Ynet_Rss.Text = Ynet_Rss.Text.Substring(0, Ynet_Rss.Text.Length-1); 
     string s = Ynet_Rss.Text; 
     // MessageBox.Show("Index = " + s.IndexOf("מבזקים")); 
     if (s[0] >= 'א' && s[0] <= 'ת') 
     { 
      string tmp = ""; 
      string tmp2 = ""; 
      //Ynet_Rss.Text = Cutting(Ynet_Rss.Text, 0, s.IndexOf(" ")); 
      int EndIndex = -1; 
      for (int i = 0; i < s.Length; i++) 
      { 
       if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) 
       { 
        EndIndex = i; 
        //MessageBox.Show("EndIndex = " + EndIndex + "s[i] = " + s[i].ToString()); 
        break; 
       } 
      } 
      if(EndIndex == -1) 
      { 
      // MessageBox.Show("EndIndex = " + EndIndex); 
       EndIndex = s.Length; 
      } 
      //tmp = Ynet_Rss.Text.Substring(Ynet_Rss.Text.IndexOf(" ")); 
      tmp = Ynet_Rss.Text.Substring(EndIndex); 
      tmp2 = Ynet_Rss.Text.Substring(0, EndIndex); 
      // MessageBox.Show("V1 = " + tmp2); 
      tmp2 = Ynet_Rss.Text.Substring(0, tmp2.Length-1); 
     //  MessageBox.Show("V2 = " + tmp2); 
      Ynet_Rss.Text = tmp2 + tmp; 
     } 
     else 
     { 
      Ynet_Rss.Text = Ynet_Rss.Text.Substring(1); 
     } 

      Ynet_Rss.TextAlignment = TextAlignment.Left; 
    }