|
I made this but it doesn't work well!!!
private Dictionary<char, int> numbers;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string number = tbHint1.Text + tbHint2.Text + tbHint3.Text + tbHint4.Text + tbHint5.Text + tbHint6.Text;
numbers = number.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count());
if (char.IsDigit(e.KeyChar) || char.IsSymbol(e.KeyChar))
{
char keyPressedByUser = e.KeyChar;
if (!number.Contains(keyPressedByUser))
{
e.Handled = true;
return;
}
int inputCount = textBox1.Text.ToUpper().Where(c => c == keyPressedByUser).Count() + 1;
if (inputCount > numbers[keyPressedByUser])
{
e.Handled = true;
return;
}
e.Handled = false;
}
else
{
e.Handled = true;
}
}
|
|
|
|
|
Let me give you a piece of advice. Keypress is a poor way to verify text input, what happens when the user pastes a value in?
This space for rent
|
|
|
|
|
Build a string of allowed characters and test for the presence of the character entered, for instance to allow only numbers (apologise it is in VB but easy to convert);
Public Const IntegerStrings As String = "0123456789" + ChrW(8)
Public Sub IntegerKeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbHigh.KeyPress, tbLow.KeyPress
If IntegerStrings.IndexOf(e.KeyChar) = -1 Then
e.Handled = True
End If
End Sub
Your difficulty arises when you are testing for a compound of digits like 75 and 50 in your example, for this you cannot use keypress but would have to test what was entered when the textbox is complete.
|
|
|
|
|
Please clarify for me what are EventListener, EventHandler, EventRaiser, and CallBack by explaining what each is and giving a code example of each term.
I've been reading articles and watching videos about Events and Delegates and my head is spinning due to the use of the terminologies just mentioned.
The presenters did not give clear explanations as to what they are and it's causing me to have a lot of confusions.
modified 18-Dec-16 9:34am.
|
|
|
|
|
|
|
You've asked enough questions here to know how to ask a question: and linking to code on a different site isn't good.
And just dumping two sets of code on us and saying "it don't work" isn't going to get you very far either.
We've already told you that just blindly converting between Pascal and C# is a good idea.
What have you done to sort this out?
What have you found out about this problem by using the debugger?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I change from bool[] uzet=new bool[6]; to bool[] uzet=new bool[7]; but I get this error:
void oznaci_po_redu(int s)
{
l = 0;
while (s > 0)
{
l++;
if (!uzet[l]) s--; -----Index was outside the bounds of the array--------
}
uzet[l] = true;
}
|
|
|
|
|
Well, clearly you need to find out what value s has before you enter the loop, and why it might be larger than the number of elements.
We can't do that for you: you need the debugger to find out!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Value of s before entering loop was 1
|
|
|
|
|
Then look at the code using the debugger and see exactly what is happening each time it goes round the loop.
It's pretty obvious if you just pay attention to what you have written ... and the debugger would show that that immediately...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
|
No, it's l
void oznaci_po_redu(int s)
{
l = 0;
while (s > 0)
{
l++;
if (!uzet[l]) s--; -----Index was outside the bounds of the array--------
}
uzet[l] = true;
}
But it gets increased while s is non zero, and when does s get reduced?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
My bad. And looking more closely at the code, I now see what you were alluding to.
|
|
|
|
|
A quick visit with Mr Debug would have shown the OP as well!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I changed this loop for (prog.u = 1; prog.u < 6; prog.u++) to for (prog.u = 0; prog.u < 5; prog.u++) now I have this error: imageshack.com/a/img923/8677/WIBoHG.png
|
|
|
|
|
And the message is telling you exactly what is wrong.
|
|
|
|
|
And what error is that?
It's less work for you to copy and paste the actual text, than to post a screen shot on a dodgy image site that I'm not planning on visiting...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Error is: Attempted to divide by zero.
|
|
|
|
|
Well, the error message pretty much explains itself.
Mathematics does not allow you to divide by zero, so you should probably make sure your application doesn't try to do that, wouldn't you say?
The fun bit is finding out why your application is trying at all. And - again - that's where you and Mr Debugger get to be good friends, because he's the one that tells you how the divisor came to be zero: which is pretty much essential to preventing it in future.
Seriously, get used to the debugger - it's a powerful, flexible tool that most developers spend a considerable amount of time with. It's a lot more fun - and a lot quicker - to find the information than it is to ask here. Especially as most of the time we have to say "use the debugger to get information" anyway!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
When I changed all loops to start from 0 to n-1,those that start with other number than 0 I set to start from value reduced by 1 to n-1 I still get error: Index was outside the bounds of the array
|
|
|
|
|
And? What did the debugger show you?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I fixed that error but when I start program and input target value and values I get wrong expression.
When I type 100 for target number and numbers 5,8,9,4,20,50 for making expression I get:
5150-(' + w + ')+5355+5150
Instead of:
(6-1)*4*5
|
|
|
|
|
At the risk of repeating myself:
Quote: And? What did the debugger show you?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OK. Sit down and listen up.
Your'e trying to get everyone here to debug your code for you. That's not going to happen.
The debugger is there to debug YOU, to give you a tool to understands how your code works, what it's really doing, to increase your understanding.
USE IT.
The problem with the code you have is that you didn't write it and have no idea how it's supposed to work. This is where the debugger is an indispensable tool, to better your understanding of how the code works.
We can't do that for you.
|
|
|
|