Prevent A Sub / Function From Firing Multiple Times On The Same Event?
Apr 1, 2009
I'm trying to prevent a sub / function from firing multiple times on the same event.My app is for handling inbound phone calls (tapi).The app is supposed to route calls based on the callerid number.
aircode below:
Code:
Private Sub OnNewCall(ByVal sender As Object, ByVal e As NewCallEventArgs) Handles tapiManager.NewCall
if newcall.callerid = "5551001" then
redirect(newcall)
[code]....
If callA.callerid = "5551001" then redirect(callA)but, once it is redirected to the new extension, do not then grab the call from the new extension and try to redirect again (resulting in infinite loop).I realize I could use an integer as a counter, but the problem is, I might actually get more than 1 call at the same time from the same callerid number. And, all the calls would need to be redirected (once).the calls do have properties like (which are unique identifiers to each call):
Code:
phcall.id and phcall.hashcode
I'm thinking I need to put that unique id into a temp var / array to run a check against to see if it has been redirected, if it has then skip, if it has not then redirect.The app would run 24x7, and I don't want the temp var / array to get too big, and would want to have it clean automatically (up on a timer maybe?)(I'm guessing it would be a dynamically growing array.)
I designed a DataGridView under the name "dgvTarifa" and took a chance on trying Row Validating (tried Validated, CellEnter, CellLeave, RowEnter, RowLeave all count same) event. The purpose of the code is to load the selected values of the respective columns into three textboxes in order to rephrase/revalue those and update them by pressing a button. All works fine every single line of code there's nothing wrong except one logical thing.
When the form loads the RowValidating automatically fires because I have a function that Selects the table from the Database and it fills the DataSet by then attaching it to the datasourse of the "dgvTarifa" table. After setting the datasource of the datagridview, it automatically jumps to the RowValidating event which I DONT WANT TO! It first has to finish the whole function and later when the user enters with mouse or enters/leaves a row this has to be fired. (eventually already have the CellClick event with the same code below so only RowValidating has to work properly...)
Here's the code I use at row validating
Code: Private Sub dgvTarifa_RowValidating(sender As System.Object, e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dgvTarifa.RowValidating
I have a Devexpress Gridview that is linked to a delete, fetch and update stored procedure. The problem I am having is that when I run my program, select a row in the grid and press delete it fires the event multiple times. Specifically it deletes the selected row and then I re-fetch the data so the focus returns to the first row. Which is what I want.
Unfortunately it starts at the beginning of my list and goes down it row by row deleting each row it comes to. It then continues several more times after the rows are deleted. I know this because for each deleted row it asks me if I want to delete it. If I say no then the rows appear to disappear until I manually refresh it after the deleting is done. To make this even more random the second row always reappears after I manually refresh the grid.
Is there a way to prevent the SelectionChanged event from firing when adding rows to a DGV programatically? I am adding rows in a loop & the SelectionChanged event fires twice, which is causing me problems. I only want it to fire when the user clicks on a row.
I have a DGV in VB.Net 2008 connected to an Access DB table. The DGV is not Read Only, but is full of read-only columns except for one, which contains a combo box. The combo box allows the user to select an outcome for that particular row, and then the program copies in a pre calculated value into the "Profit" column depending upon the item selected in the combobox. Then the user hits the Save button and the DB updates (currently via SQL methods in the XSD).
Easy enough so far.
Here is the code.
Private Sub DGUserBets_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DGUserBets.EditingControlShowing
[Code]....
The problem I have is that it would seem that if a user selects the desired outcome from the combobox but does NOT hit Enter, and simply mouses on to a different combobox to again select the outcome for a different row, the first eventhandler is not disconnected and thus the events fire multiple times. This then causes various default MsgBox errors and brings up problems when the user tries to commit all changes to the DB/exit program etc etc.
What do I need to do? Do I need to .EndEdit somewhere appropriate to force the row to save the changes? And where should I call this?
I am trying to programmatically add an unspecified amount of new UserControls to a form. One will be added every time an entry is selected in a ComboBox contained within the UserControl. Problem is, the SelectedIndexChanged event fires completely erratically. Sometimes twice, sometimes 3 times, etc., but never just once. No matter how many times I set the combobox's SelectedIndex to -1, it fires at least once with a SelectedIndex of 0. Sometimes the Itemselected event fires multiple times inbetween SelectedIndexChanged events.
InvoiceEntry.vb snippet: Public Event ItemSelected As EventHandler Private Sub cboItem_SelectedIndexChanged(sender As System.Object, _ e As System.EventArgs) Handles cboItem.SelectedIndexChanged RaiseEvent ItemSelected(Me, EventArgs.Empty) End Sub [Code] .....
I would like this ASP button control to stop calling its event handler when the JavaScript client method IsCorrectPrice() returns false.
<asp:Button ID="btnsubmit" runat="server" Text="Submit" OnClientClick="javascript:IsCorrectPrice()"/> btnsubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsubmit.Click
url..I tried to change the combo box value and save the webpage data in string and finally extract my desired data. It works but unfortunately when the combo box value is changed it takes some times for webpage to update.
I have a custom text box component (inherits from system.windows.forms.textbox) that I created in vb.net (2005) that handles the input of numeric data. It works well.
I would like to suppress the validating and validated events from firing if the number hasn't changed. If a user is tabbing through the form and tabs from the text box, the validating/validated events are fired.
I was thinking that the text box could cache the value and compare it to what is listed in the text property. If they are different, then I would want the validating/validate events to fire. If they are the same, nothing is fired.
I can't seem to figure out how to suppress the event. I have tried overriding the OnValidating event. That didn't work.
Update:
Here is the custom text box class. The idea is that I want to cache the value of the text box on the validate event. Once the value is cached, the next time the user tabs through the box, the validating event will check to see if the _Cache is different from the .Text. If so that is when I would like to raise the validating event to the parent form (as well as the validated event). If the _cache is the same, then I don't want to raise the event to the form. Essentially the text box will work the same as a regular text box except that the validating and validated method are only raised to the form when the text has changed.
Public Class CustomTextBox #Region "Class Level Variables" Private _FirstClickCompleted As Boolean = False 'used to indicate that all of the text should be highlighted when the user box is clicked - only when the control has had focus shifted to it
I have a button and various other controls that when clicked, calls as sub. However if the user clicks the button or any of the other controls multiple times, the sub appears to 'stack up'. For example, if I click the button 10 times, and then some of the menu items that trigger it 20 times, the sub would 'stack up' and execute 30 times total. How can I have the sub cancel calls to itself if its called again? I basically only want the latest call to it to count.
Heres code to reproduce it. Just a button on a form. Dim intTotalTimesClicked As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click BlastOfNumbers() [Code] .....
Consider I have a shared function:Public Shared Function CalculateAreaFromRadius(ByVal radius As Double) As Double
[Code]...
If I have two or more threads in the same vb .net app and each of them calls the shared function at the same time with different RADIUS, will they each get their own AREA? I want to know for each call to the function if it is using same local variables or each call creates new instances of local variables?Will the answers to above questions be same If I have multiple (2+) single threaded apps and they all call the function at the same time with different RADIUS value?
I'm working on a .NET component that gets a set of data from the database, performs some business logic on that set of data, and then updates single records in the database via a stored procedure that looks something like spUpdateOrderDetailDiscountedItem.
For small sets of data, this isn't a problem, but when I had a very large set of data that required an iteration of 368 stored proc calls to update the records in the database, I realized I had a problem. A senior dev looked at my stored proc code and said it looked fine, but now I'd like to explore a better method for sending "batch" data to the database.
What options do I have for updating the database in batch? Is this possible with stored procs? What other options do I have? I won't have the option of installing a full-fledged ORM,Additional Background Info:Our current data access model was built 5 years ago and all calls to the db currently get executed via modular/static functions with names like ExecQuery and GetDataTable. I'm not certain that I'm required to stay within that model, but I'd have to provide a very good justification for going outside of our current DAL to get to the DB.
Also worth noting, I'm fairly new when it comes to CRUD operations and the database. I much prefer to play/work in the .NET side of code, but the data has to be stored somewhere, right?
Public Sub btnGo_ServerClick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btnGo.ServerClick
The btnGo_ServerClick function needs to fire on the button click, but not on page refresh.I've tried using IsPostback, but that is always true- even on the button click.N.B. I'd rather not go into the reasons behind why I'm using a serverclick, rather than an asp:button and a click event. Suffice to say it just isn't suitable for I am doing.
Consider a simple VB.NET form with a couple of radio buttons and a checkbox.
Each of the radio buttons has a CheckedChanged handler setup that performs some action based on the state of the checkbox.
My problem is, when I initialize on the default radiobutton to be checked (from the designer properties window) the CheckedChanged event is fired for that radio button, but the Checkbox hasn't been initialized yet so I either get a null pointer exception or the wrong value is used in the handler. Either way, I don't want that handler code to be run unless the user picks a radio button after the form has been loaded.
I currently get around this by not initializing the radio button, but I need to set that default eventually and the best place is from the designer. I also can add a boolean field that's not set to true until the form is fully loaded and not process the events if that is false, but it's a dirty hack.
What can I do to prevent that handler from running its code?
I know something like this exists, I juts don't know the right word to search about it, so basically I have a cosole application and if it runs twice it crashes. I wanna dispay a message: Sorry app alerady running.I can look at processes and see if my exe is there already running but that's much harder.
I am using a monthcalendar inside of a panel. when the user changes the "showweeknumbers" of the calendar I need to move some label to the right of the calendar, but I also need to resize the panel. The problem comes into play when the user hides the weeknumbers, the monthcalendar resize event fires and the labels move, but the panel resize causes the month calendar to fire the resize event again, making the labels all out of wack...
I've been looking for a solution to this for several hours now and cannot find a solution.
The Scenario:I have a masterpage baseclass (called basemaster)All of my master pages inherit from basemaster basemaster defines an event 'Public Event HandleClickEvent As EventHandler'I have a masterpage named master1 master1 defines an event handler 'Public Shadows Event HandleClickEvent As EventHandler'master1 has a user control named usr1 usr1 has a button that raises event ButtonClicked when clicked I have a page (thePage) that uses master1 thePage has a button click event handler that it registers like so: 'AddHandler Master.HandleClickEvent, AddressOf HandleTheClick' master1 has code something like:
Protected Sub Usr1_ButtonClicked(ByVal sender As Object, ByVal e As System.EventArgs) Handles Usr1.ButtonClicked RaiseEvent HandleClickEvent(sender, e) End Sub when thePage loads I see it register the handler on master1 when the button is clicked, Usr1_ButtonClicked is fired and I step through the RaiseEvent but HandleClickEvent on thePage is never reached.
i have a page which dynanically create a link when it load, after i click on the link it should loop in the database fetch all the record and display another set of link , then when i click on these link it should give me all information about this particular record it like this one
Q: when the page loads, it creates the first link which is associated with an event handler, it fire the first event handler (Getname) but it not firing the second event handler (GetnameDetails)
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init If ViewState.Item("nameload") IsNot Nothing Then If ViewState.Item("nameload").ToString = "True" Then
[url]...and have applied the vb code. The problem I have is that the user doesn't navigate within the datagridview. They click a save button on a toolstrip. As the user doesn't move from the current cell then the cellvalidating event doenst get fired. [code]...
We're trying to design a toolbar to use as an addon in another program. we want to set one of the buttons so that when u single click it, the image on the screen is blanked out. And when you double click the same button, it blanks everything except the selected image. However the DoubleClick event doesnt seem to be working at all.
I have two forms that I worked on separately, each has an event load button that works with a datagridview without any problem. but when I created a third form and moved the buttons on it and try to update the datagridviews on the two forms, it doesn't fire up here's my
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Below is my databinding code. It is called from Page_Load()
[Code]....
Bind data to datasource of dropdown control when it is not postback Control was added from toolbox tried adding event handler in .aspx. Still did not work.
I've bound a bindingsource to a datagridview and each time i move the cursor on the datagridview to a different row, the positionChanged does not fire. This event handles other bindingsource too and I hv no problems with other datagridviews.
Im couldnt work out the behaviour for this particular datagridview.
I am running VS 2008 and building my app on a Windows 7 box. The main form/window has a KeyDown event handler as follows in it:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown MsgBox("control = " + e.Control.ToString + ", shift = " + e.Shift.ToString + ", e.Keycode = " + e.KeyCode.ToString)
When I build it and run it within VS it seems to run fine. The messagebox appears with the state of the control and shift keys along with the key code of the key I pressed. However, if I take the executable and run it on an XP box (both using .Net Runtime 3.5) as soon as the main form opens, the messagebox appears. Basically the "KeyDown" event seems to be firing without any keys being pressed. The messagebox comes back with: "control = False, shift = False, e.Keycode = None".
How is this possible? How can the keyDown event be fired when no keys have been pressed (as is confirmed by the output contained in the messagebox?) how I can diagnose this on the XP box since it does not have Visual Studio on it?Update I tried creating a brand new project where there is only "form1" and the only code behind this is the keyDown event handler. It just opens a blank window and pops up the message box if a key is pressed. It worked as expected on the Win 7 box but when I moved the executable to the XP box, it immediately popped open the messagebox without pressing a key.