Reputation: 693
In my code we can see that I am pulling a random line from ListBox by using a random.Next. The problem is that if I want to check the same line for number of characters I'm using a new random number which causes some problems.
How can I use first random number to be used in my IF statement?
SendKeys.Send(lbMessage.Items[random.Next(lbMessage.Items.Count)].
ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[random.Next(lbMessage.Items.Count)].ToString().Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
Upvotes: 1
Views: 500
Reputation: 19496
If you pass a seed value to the Random() constructor, you'll get the same random values every time.
Random random = new Random(86); // Seed can be any Int32 value
Is that what you're trying to accomplish? I would have thought Sergio's answer was what you're looking for, but it doesn't seem to be.
Upvotes: 0
Reputation: 15569
Is this what you're looking for?
int index = random.Next(lbMessage.Items.Count);
string value = lbMessage.Items[index].ToString();
SendKeys.Send(value.Substring(currentChar++, 1));
if (currentChar == value.Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
Upvotes: 0
Reputation: 2777
how about storing the randomness temporarily?
int randomness = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[randomness].ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[randomness].ToString().Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
Upvotes: 0
Reputation: 230336
Simply back it up to a variable :-)
var rnd = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[rnd].
ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[rnd].ToString().Length)
{
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
Upvotes: 1
Reputation: 236004
Save the first random number in a local variable and use it later, like this:
int ran = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[ran].ToString().Substring(currentChar++, 1));
if (currentChar == lbMessage.Items[ran].ToString().Length) {
SendKeys.Send("{enter}");
tmrSpace.Enabled = false;
currentChar = 0;
}
Upvotes: 2