C# WPF中的富文本框。查找或选择框中已存在的文本?
编辑:在文章末尾包括我的整个程序代码 我正在做一个交易或不交易的游戏,我的一切都在运作,除了消除双方的数字,因为他们猜测。希望有人能指引我 我有一个WPF,里面有两个富文本框。我有一个数字数组,我把一半放在一个文本框中,另一半放在另一个文本框中。我将这些值显示为符合游戏主题的货币 这是我的数组代码,显示在文本框中:C# WPF中的富文本框。查找或选择框中已存在的文本?,c#,C#,编辑:在文章末尾包括我的整个程序代码 我正在做一个交易或不交易的游戏,我的一切都在运作,除了消除双方的数字,因为他们猜测。希望有人能指引我 我有一个WPF,里面有两个富文本框。我有一个数字数组,我把一半放在一个文本框中,另一半放在另一个文本框中。我将这些值显示为符合游戏主题的货币 这是我的数组代码,显示在文本框中: //initialize array with dollar values displayNumbers = new int[] {0, 1, 5, 10, 25
//initialize array with dollar values
displayNumbers = new int[] {0, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750,
1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000};
//initialize usedNumbers array with a length
usedNumbers = new int[displayNumbers.Length];
//display amounts in 1st textblock. boxSize = 26 (size of array)
for(int i = 0; i<(boxSize/2); i++)
{
textBox1.AppendText(displayNumbers[i].ToString("C0") + " \n");
}
//display amounts in 2nd textblock
for(int i = boxSize/2; i < boxSize; i++)
{
textBox2.AppendText(displayNumbers[i].ToString("C0") + "\n");
}
//使用美元值初始化数组
displayNumbers=newint[]{0,1,5,10,25,50,75,100,200,300,400,500,750,
1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000};
//使用长度初始化UsedNumber数组
usedNumbers=newint[displayNumbers.Length];
//在第一个文本块中显示金额。boxSize=26(阵列大小)
对于(int i=0;i回答您的问题需要多段代码。由于您没有展示大部分部分,因此我仅为您提供完成任务的建议和参考
您不需要跟踪索引,因为按钮具有您需要在richtextbox中搜索和处理的文本量
从文本框中删除所选金额
a、 单击按钮时,首先在富文本框中搜索金额“$”+searchAmount+“\n”
。在或处参考解决方案。逐个搜索文本框。如果在第一个文本框中找到,则无需在第二个文本框中搜索
b、 选择搜索的数量并装饰它
c、 我的建议是用删除线装饰它,而不是从文本框中删除它。您也可以用红色突出显示它。删除所选文本很简单,请使用textBox1.SelectedText=“”;
。可以使用textBox1.SelectionColor=color.Red;
进行红色高亮显示。对于删除线,您必须使用TextRange
和textdocardiocollection
。请参阅
你能告诉我你到底想从你的富文本框中提取什么吗?是143066这个数字还是别的什么吗?它是我数组中的一个值。它们是随机的,所以我不知道它是什么数字。基本上是什么显示数字[I]当前是。在您试图提取值的位置显示代码?这基本上是我想要做的,但这是来自表单的代码,而不是WPF。显然,RichTextBox在WPF中没有.Find选项?*抱歉,无法在注释中显示代码…private void showamontsused(){for(int i=0;iusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DealorNoDeal
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
int[] displayNumbers;
int[] usedNumbers;
Random random = new Random();
int boxSize = 26;
Button button;
int turns = 0;
int boxesToChoose;
int boxesLeft = 26;
int bankOffer;
bool isOffer = false;
bool deal = false;
private Button firstChoice;
int round = 0;
public MainWindow()
{
InitializeComponent();
//initialize array with dollar values
displayNumbers = new int[] {0, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750,
1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000};
//initialize usedNumbers array with a length
usedNumbers = new int[displayNumbers.Length];
//display amounts in 1st textblock
for(int i = 0; i<(boxSize/2); i++)
{
textBox1.AppendText(displayNumbers[i].ToString("C0") + " \n");
}
//display amounts in 2nd textblock
for(int i = boxSize/2; i < boxSize; i++)
{
textBox2.AppendText(displayNumbers[i].ToString("C0") + "\n");
}
//deal/nodeal buttons disabled on startup only enabled when deal is offered
buttonDeal.IsEnabled = false;
buttonNoDeal.IsEnabled = false;
//randomize dollar values for boxes now that they have been displayed in order
ShuffleDecks();
}
private void ShuffleDecks()
{
//fisher-yates shuffle algorithm
int index;
string temp;
for (int i = 0; i < boxSize; i++)
{
index = random.Next(boxSize);
temp = Convert.ToString(displayNumbers[i]);
displayNumbers[i] = displayNumbers[index];
displayNumbers[index] = Convert.ToInt32(temp);
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
button = sender as Button;
if (deal == true)
{
if (bankOffer > displayNumbers[0])
{
textBlockDisplay.Text = "You made a good deal! Your winnings: " + bankOffer.ToString("C0");
}
else
{
textBlockDisplay.Text = "Better luck next time! Your winnings: " + bankOffer.ToString("C0");
}
firstChoice.Content = displayNumbers[0].ToString("C0");
firstChoice.IsEnabled = false;
}
else
{
if (isOffer == false)
{
//first turn is to pick a box, not opening a box
if (turns == 0)
{
button.IsEnabled = false;
firstChoice = button;
boxesToChoose = BoxesToOpen();
textBlockDisplay.Text = "Now choose " + boxesToChoose + " box(es)";
}
//opening boxes
else
{
button.FontWeight = FontWeights.Bold;
button.Content = displayNumbers[turns].ToString("C0");
usedNumbers[turns] = displayNumbers[turns];
boxesToChoose--;
textBlockDisplay.Text = "Now choose " + boxesToChoose + " box(es)";
//FindText(textBox1,Convert.ToString(button.Content),Brushes.Red);
}
boxesLeft--;
CheckTurns();
turns++;
}
}
}
//see what turn we are on and make an offer
private void CheckTurns()
{
if(turns == 6 || turns == 11 || turns == 15 || turns == 18 || turns == 20 || turns == 21 || turns == 22 || turns == 23 || turns == 24 || turns == 25)
{
//enable deal/nodeal buttons
buttonDeal.IsEnabled = true;
buttonNoDeal.IsEnabled = true;
isOffer = true; //disable the other boxes you haven't opened yet
//calculate the offer
bankOffer = CalculateOffer(boxesLeft);
textBlockDisplay.Text = "The bank offers you: " + bankOffer.ToString("C0") +" Deal?";
round++;
}
}
private void buttonDeal_Click(object sender, RoutedEventArgs e)
{
if (turns < 25)
{
deal = true;
GreyAllBoxes();
firstChoice.IsEnabled = true;
textBlockDisplay.Text = "Game Over! You walk away with " + bankOffer.ToString("C0") + " Click your first box to see if you made a good deal.";
}
else
{
textBlockDisplay.Text = "Game Over! You walk away with " + bankOffer.ToString("C0") + " Click your first box to see if you made a good deal.";
}
}
private void buttonNoDeal_Click(object sender, RoutedEventArgs e)
{
if (turns < 25)
{
isOffer = false;
boxesToChoose = BoxesToOpen();
textBlockDisplay.Text = "Now choose " + boxesToChoose + " box(es)";
}
else
{
//stick with first box or take last box
textBlockDisplay.Text = "Do you choose your 1st box, or " + bankOffer.ToString("C0") + "?";
buttonDeal.Content = bankOffer.ToString("C0");
buttonNoDeal.IsEnabled = false;
firstChoice.IsEnabled = true;
}
}
private int CalculateOffer(int boxes)
{
int offer;
int mainSum = displayNumbers.Sum();
int usedSum = usedNumbers.Sum();
//offer = sum of boxes left, divided by number of boxes left
offer = (mainSum - usedSum)/boxes;
return offer;
}
private void GreyAllBoxes()
{
buttonDeal.IsEnabled = false;
buttonNoDeal.IsEnabled = false;
button1.IsEnabled = false;
button2.IsEnabled = false;
button3.IsEnabled = false;
button4.IsEnabled = false;
button5.IsEnabled = false;
button6.IsEnabled = false;
button7.IsEnabled = false;
button8.IsEnabled = false;
button9.IsEnabled = false;
button10.IsEnabled = false;
button11.IsEnabled = false;
button12.IsEnabled = false;
button13.IsEnabled = false;
button14.IsEnabled = false;
button15.IsEnabled = false;
button16.IsEnabled = false;
button17.IsEnabled = false;
button18.IsEnabled = false;
button19.IsEnabled = false;
button20.IsEnabled = false;
button21.IsEnabled = false;
button22.IsEnabled = false;
button23.IsEnabled = false;
button24.IsEnabled = false;
button25.IsEnabled = false;
button26.IsEnabled = false;
}
private void UnGreyAllBoxes()
{
button1.IsEnabled = true;
button2.IsEnabled = true;
button3.IsEnabled = true;
button4.IsEnabled = true;
button5.IsEnabled = true;
button6.IsEnabled = true;
button7.IsEnabled = true;
button8.IsEnabled = true;
button9.IsEnabled = true;
button10.IsEnabled = true;
button11.IsEnabled = true;
button12.IsEnabled = true;
button13.IsEnabled = true;
button14.IsEnabled = true;
button15.IsEnabled = true;
button16.IsEnabled = true;
button17.IsEnabled = true;
button18.IsEnabled = true;
button19.IsEnabled = true;
button20.IsEnabled = true;
button21.IsEnabled = true;
button22.IsEnabled = true;
button23.IsEnabled = true;
button24.IsEnabled = true;
button25.IsEnabled = true;
button26.IsEnabled = true;
}
private int BoxesToOpen()
{
if (round == 0)
{
boxesToChoose = 6;
}
else if(round == 1)
{
boxesToChoose = 5;
}
else if (round == 2)
{
boxesToChoose = 4;
}
else if (round == 3)
{
boxesToChoose = 3;
}
else if(round == 4)
{
boxesToChoose = 2;
}
else
{
boxesToChoose = 1;
}
return boxesToChoose;
}
}