|
Looks to me like the value property gives you the number of decimal places you asked for, and the Text property does not. Why is this a problem ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Take another look. The Value property, which is what they want you to use according to the examples, does not give what was asked for. In any case, nothing should give you something different than what is shown in the control.
wjr@itt
|
|
|
|
|
What you're basically complaining about is that the text box does not enforce the decimal places property. If you want that, then you should build a class on this one. Otherwise, the Value enforces the decimal places property, even if the entered text does not match it. I still don't see the issue. If you want the decimal places enforced in the text box, create a class. If you don't want it to work like this, set the decimal places value to something other than 0.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian,
When you get the Value property from the NumericUpDown, it is suppose to give you the value that is displayed in the control. The whole purpose of the NumericUpDown is to make things easy for you so that you do not have to check what the user is typing. It will check the min and max, the number of decimal places, and the characters that are type if you choose hex. I know that I can write my own class. I wrote my own numeric up down 10 years ago in Motif and have been using ever since. It's not hard to do, but why duplicate what the supplied classes are SUPPOSE to do for you? Again, the purpose of the NumericUpDown is to automatically enforce the limits set by the properties and give you a value that you can count on as being correct. If it does not do what is advertised, it is a problem.
wjr@itt.com
|
|
|
|
|
wjr@itt.com wrote:
Again, the purpose of the NumericUpDown is to automatically enforce the limits set by the properties and give you a value that you can count on as being correct. If it does not do what is advertised, it is a problem.
But the problem in essence is that the text box does not enforce the number of decimal places you asked for, right ? The Value property does not have a problem, except that it enforces what the text box does not. To my way of thinking, the decimal places property is provided to give you a value within a fixed range that you've requested, but if a use goes outside that, it rounds it for you. If this is not what you want, then you can either have no decimal place specification ( which means you can use the value property ), or you can write your own control to enforce it in the text box as well ( which would mean you could use the value property ).
As far as I can see, it behaves as advertised. The Value property gives you the value in the text box, after applying the rules that you asked it to. I understand that it's not doing what you want, but the Value property is NOT the problem, it's working fine, and overall, it works as the docs suggest. The problem is in what you were hoping for, which is why it's possible to derive your own controls, to get behaviour the framework does not provide.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian,
Please read the example carefully. The text box ALWAYS displays the correct value (the correct number of decimal places). When you retrieve the value from the text box using the Value property, it DOES NOT return what is displayed and it has the wrong number of decimal places. THE VALUE PROPERTY DOES NOT RETURN THE VALUE IN THE TEXT BOX. I can't make it any simpler than that.
|
|
|
|
|
Oh... I see what you mean now. I have to admit, I read through what you were saying, and got it backwards. So the text box is masked, and so the Text property works, but the Value is not reset at the same time.
I'd agree then, this is a bug, and it's still present in VS2005. I'll bring it up in Seattle.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I discovered a problem with my workaround of using the Text property of the NumericUpDown to retrieve the correct value that is displayed by the control. In my simple example that I posted, accessing .Text worked fine. In my real, more complex app, accessing .Text in the button click handler caused the NumericUpDown to continue to display the wrong value (wrong number of decimal places) and the value returned by .Text was incorrect too. My workaround for this was to create a Validated handler for the NumericUpDown that did nothing more than assign the Value attribute to a variable and do nothing else with it. As long as .Value is accessed before anything else accesses .Text, things seem to be OK.
wjr@itt
|
|
|
|
|
I need to add and remove points to an image loaded from a file,
the procedure would be first select the add or remove button and
then select the position in the image where we want to add or
remove. I have to do this both in C# and ASP.net
If you could give me any hint or paste some code i would appreciate
it. thank you
|
|
|
|
|
Don't cross post.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I have a TabControl, and tabs can be dynamically added for users. When a tab is added, a user-control is added to that tab. So each tab has an identical user control, and each control is made up of a group of identical controls. I need to access those controls, in this case, a timer from the main window, but I cannot just use the name of the timer "refreshTimer". How would I access them?
I have tried
tabcontrolname.tabpages[selectedIndex].usercontrolname.refreshTimer.Start();
along with several other variations, but none of them have worked so far. Any suggestions?
|
|
|
|
|
Every time a new control is added, store it in a ArrayList then you can cast any object from the array list and access its properties.
|
|
|
|
|
Either I don't understand your solution or I didn't explain myself very well. It works like this.
on my form (MainWindow) I have a TabControl called MonitorTabs. I programmatically add a tab to it for each user I want to monitor like so:
<br />
TabTitle = FirstName + " " + LastName;<br />
TabPage newMonitorTab = new TabPage(TabTitle);<br />
MonitorTabs.TabPages.Add(newMonitorTab);
Then I add a user control called Monitor that contains a group of controls including a timer (RefreshTimer) to that tab like so:
Monitor monitor = new Monitor();<br />
monitor.Size = newMonitorTab.Size;<br />
monitor.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;<br />
monitor.UserID = UserID;<br />
newMonitorTab.Controls.Add(monitor);
Then the function ends and other things happen. From the menu in MainWindow, I call a function that needs to reset the interval on RefreshTimer on the currently selected tab. There may be three RefreshTimers, one on each User Control/Tab, and I don't know how to access any of them let alone the one that is currently selected. The timer is set to public, and still nothing shows up. I hope this explains it better. Thanks for any forthcoming help
|
|
|
|
|
i am loading a flash movie into a .net page and i want to send it the url of the application
the flash movie gets data from the same application, but we are not using web services...they dont want to do that yet
so as i develop, i could hardcode the url for the .aspx data file
but i would rather pass flash a value of the base url
like - http://localhost/report_application/sample + actual file name
how do i get that?
|
|
|
|
|
I've just downloaded, installed, and tested Rabbi Plotkin's Continuous Form component and I like it very much. However, being a little new to C#, I'm having trouble getting the index number of the individual panels within the container panel.
Within the ItemDataBound event he has given us an EventArgs that includes e.Item, the Panel that contains the repeated data controls. I would like to know the index number of that panel relative to the panel that contains it.
Thank you for any help you can give.
|
|
|
|
|
Hi there
I was wondering if anyone could suggest a solution for this one:
Given a date, I need to determine what week of the month it is.
(thought there would be some function for doing it in .NET, but doesn't seem to be. interesting...)
Thanks
|
|
|
|
|
DAteTime has a DayOfWeek property. Once you know that, working out the week is pretty trivial.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I have written my first C# program using MS VC# 2005 Express Edition Beta (and my first C# period).
I have a dialog that runs and this dialog copies 100's of files and displays it's progress on the dialog (to, from, name, counts, etc.).
All of this works fine.
The problem is, what if I want to abort the process?
I can not use the Cancel button on the dialog as the program is running (busy coping the files) and thus can not respond to the click.
I even created an asynchronous process with a very simple dialog with just one button, a Cancel button. This would work fine for the first 6 seconds. Then all updates to both dialogs would stop even through the copy process was still running. Even the simple cancel dialog was still running as I could click the Cancel button to stop the copy process. It is just that after about 6 seconds neither dialog could be updated with new data. Using Update or Refresh did not work. NOTE: Neither process was trying to access a control on a dialog on the other process as I read this was a no-no.
Thanks for any help
|
|
|
|
|
You need to do your operations in a seperate thread, so they don't block the UI from responding.
And if this is your first C# program, you need to ditch any GUI development and write some console code first, to learn the language a bit before you start thinking about message loops and threads.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I think I did it.
It appears that all is working now.
The dialog box is running and displaying and the buttons work all while the backup engine is running.
|
|
|
|
|
Hello,
I have 2 Grids, that have same DataSource (which is a dataview). However, I want to setup the RowFilter differently for 2 Grids, so that the information displayed is different. Any ideas on how to do that?
Or do I have to create 2 separate dataviews as well?
Thank you
|
|
|
|
|
You need two separate DataViews.
The idea is that you can manipulate a DataTable from multiple DataViews.
|
|
|
|
|
Sorry for the lengthy title.
My problem is that I have a dialog in my application that I want to open in a modal fashion. But I want to be able to open another window from that modal dialog and interact between only these two windows, nothing else in the application (for doing some drag drop things between lists in these two windows).
How can I do this?
thankful for your suggestion,
Bjorn
|
|
|
|
|
No going to happen like this. THe modal window is either going to be System Modal or Application Modal. Meaning that is System Modal, the user can't switch to any other window in the system until this window is closed. Application Modal means that you can't switch to any other form owned by the application that opened the modal window.
You'll have to implement this using some other scheme other than using Modal forms. Off the top of my head, you could possibly host both of your forms that you want to display inside another, modal, form. This way, you can do anything you want between the two forms while they sit inside a parent form. I know, you think I smoking something illegal. But, the Form class inherits from Control, just any any other forms based control. The Form class also has a hidden property called .TopLevel . It won't show up in Intellisense, but it does work. You can read more about the technique here[^]. Warning! This article contains nothing but VB code!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
To do this would either require listening to the Window's message pump and syphonining off the message to your exception window or doing a special object that derives from Form that has this behavior. Neither or which are appealing at all and I highly recommend you do not go down this road.
Instead you should rethink your UI design. Having a modal dialog for all except one dialog means you should consider doing something else with either if not both dialogs since they both seem to violate UI design expectations.
|
|
|
|