簡體   English   中英

如何阻止文本更改的 texbox 運行包含文本代碼?

[英]how to stop text changed texbox from runing contains text code?

我將如何停止運行 if 語句的文本更改? 因為在我輸入 {} 后代碼運行,但如果我輸入任何字母或在我輸入 {} 后按 Enter 鍵,代碼會繼續在輸入或輸入的每個字母中制作新標簽。 這適用於 WPF c#

            private void TextBox_TextChanged(object sender, EventArgs e)
            {            
                if (textBox.Text.Contains("{") && textBox.Text.Contains("}"))
                {             
                    DraggableLabel ag = new DraggableLabel();
                    ag.Name = "A";
                    ag.Content = "you have bracket";    //(i + 1).ToString();
                    ag.BorderBrush = Brushes.Black;
                    ag.BorderThickness = new Thickness(2, 2, 2, 2);
                    DesigningCanvas.Children.Add(ag);    

                    ab = ag;    
                }           
            }

盡管有關於避免在事件處理程序中創建 UI 元素的評論,但您需要的是一個只有在文本框中有新的{ }對時才會激活的系統。 也許是這樣的:

        private int brasProcessed = 0;

        private void TextBox_TextChanged(object sender, EventArgs e)
        {            
            int countOpenBra = textBox.Text.Count(c => c == '{');
            int countCloseBra = textBox.Text.Count(c => c == '}');

            //if there is a matched pair of {} (equal counts) and more { have appeared than we know we've processed before...
            if (countOpenBra == countCloseBra && countOpenBra > brasProcessed)
            {             
                DraggableLabel ag = new DraggableLabel();
                ag.Name = "A";
                ag.Content = "you have bracket";    //(i + 1).ToString();
                ag.BorderBrush = Brushes.Black;
                ag.BorderThickness = new Thickness(2, 2, 2, 2);
                DesigningCanvas.Children.Add(ag);    

                ab = ag;  

                //mark the current count of {} as processed so the code will not fire again until someone adds a new { } pair
                brasProcessed = countOpenBra;  
            }           
        }

現在,此代碼僅在添加新的 { } 對時才會觸發。 每次添加 { } 對時,代碼都會運行。 它不適合刪除。 如果粘貼了包含多個 { } 的大量文本,則它不適合多個文本。因此它可能需要一些改進,但正如其他人所指出的那樣,您沒有告訴我們您要做什么,只是您的解決方案壞了,唉,解決方案並沒有真正讓我們推斷出你想要做什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM