C#在TextBox中从右到左

时间:2017-05-22 07:33:40

标签: c# wpf textbox rss hebrew

我尝试将TextBox移动,用于Rss更新,但问题是Rss文本也是希伯来语的英文和数字,因此每次达到数字时它就会变得疯狂:)

  

Exmaple Rss =“* ynet - מבזקים* Ynet *ביקורטראמפ:הנשיאהאמריקני   המריאמסעודיהלישראל* 15שנותמאסרלבןברדהשהרגאדםבקטטהבבתים   לפניכארבעשנים*תאילנד:24פצועיםבפיצוץבביתחוליםבבנגקוק*עשרות   אסיריםביטחונייםששובתירעבופונולבתיחוליםהחוזרולכלא*בשלביקור   地区信息:יתוגברוהרכבותלירושליםוממנה*צפוןקוריאה:מסוגליםלהתחיל   בייצורהמונישלטילבליסטישיכוללהגיעליפן*דיווחלבנוני:טראמפ   וא-סיסיסיכמועלפסגתשלוםאזוריתבשבועותהקרובים*דו\“ח:יותרממאה   אלףעובדיציבורפוטרובטורקיהמאזניסיוןההפיכה*התחזית:חםויבש   מהרגיללעונה*הפתעהב-NBA:בוסטוןניצחהבקליבלנד,צמצמהל-2:1בסדרה“

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;
} 

当然有一个DispatcherTimer每隔几刻触发一次Update_Ynet_Rss函数

1 个答案:

答案 0 :(得分:2)

经过一番思考后,我发现了问题..这就是解决方案:

        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;
    }