[英]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.