|
You may need to check out InnerException property too.
|
|
|
|
|
Hi,
I have small but very annoying problem. My form contain tabcontrol with more tabpages. When I click on separate tabpage I want set focus to first textbox on selected tabpage. Second option for select tabpage is pressing keys from F1 to F8.
I tried set textbox as ActiveControl on this form and I tried set focus but it didn't work. I noticed in some cases when I press tab after selecting tabpage focus go to textbox. So I use SendKeys.Send("{Tab}"), but dont't work when I focus tabpage with pressing key.
I spent a lot of times to solve problem btu no success.
Has anybody solution for my problem?
Thanks in advance, Jure
|
|
|
|
|
Hi,
my first attempt would be to remove all fancy code (SendKeys, ActiveControl, ...)
and to set TabStop=true and TabIndex=0 for the control you want to get focus on a tab page.
If that is not sufficient, I would use the TabControl.SelectedIndexChanged event
Hope this helps.
|
|
|
|
|
Hi,
the use of Sendkeys or ActiveControl was just experiment from despair.
I already have set TabStop=true and TabIndex=0. When I run my code with debugger I can see than code where I set focus is called just before show new tabpage. But focus stay in textbox on previous tabpage.
Thanks anyway
|
|
|
|
|
Hi, again!
My problem is solved thanks to you. I move code from event TabControl.Selected to TabControl.SelectedIndexChanged as you have writen and now all work fine.
Thank you very much!
|
|
|
|
|
if (this.tabControl1.SelectedTab == this.tabPage1)
this.textBox1.Focus();
else if (this.tabControl1.SelectedTab == this.tabPage2)
this.textBox3.Focus();
That should do it.
|
|
|
|
|
Hi, I tried this again, but doesn't work. Focus stay in textbox on previous tabpage.
Thanks all the same.
|
|
|
|
|
When I obtain the content of the chip data, it shows the hex formatted display on the rich text format control...The entire content fits in the control well without the use of vertical scroll bar (which is enabled in the control properties)...
After obtaining the content of the new chip data, i used (rtfDispData.text = "") and the only first line clears up then display the new entire data (rich text control is refreshed)...
The interesting thing is that I have other chip that has more data in it and produced longer list of data, thus showing the vertical scroll bar. After dumping the big data again, the whole rich text control is cleared then display new data... (also used the same thing (rtfDispData.text = "")...
Why is this happening? seems that I have to use the vertical scroll bar to be seen in order to clear entire rtf control? I need to clear this control when the vertical scroll bar isn't visible. HELP!
|
|
|
|
|
Hi,
your story does not match my experience with RTB. Are you sure it does that ?
BTW There is a Clear() method that removes all text.
|
|
|
|
|
Weird eh?
Same issue for Clear() method.
again, weird eh?
|
|
|
|
|
P.S. This is how I populate the rich text field... the length of dataHexDump could be 256 or 512 bytes length. 512 bytes length does show vertical scroll bar automatically.
<code snippet>
for (int line = 0; line < (memSize / 16); line++)
{
for (int col = 0; col < 16; col++)
rtfDumpResult.Text += dataHexDump[line * 16 + col].ToString("X2") + " ";
rtfDumpResult.Text += "\r\n";
}
-- modified at 9:24 Monday 2nd July, 2007
|
|
|
|
|
So my best guess is you dont (always) execute the line rtfDispData.text = "";
you could put it right in front of your nested for loops...
I also noticed your RTB changed names ?
|
|
|
|
|
The code snippet that I showed is the actual rtb name... The thing is that I want to clear the screen so I can see that the software is processing obtaining and encoding bytes into hex equivalent string and display.
|
|
|
|
|
Just a guess:
maybe you are doing the rtb.Text="" in some other thread (which is illegal!)
and sometimes it works, sometimes it fails (it should always throw an Exception since
.NET 2.0 unless you set CheckForIllegalCrossThreadCalls=false, which one should never do !!).
If so, read up on Control.InvokeRequired and Invoke.
If not, give it a try with Application.DoEvents() following rtb.Text=""; if that helps,
consider it a hack, and try to move the code following it into asynchronous execution
(a separate thread, or something based on timer ticks).
|
|
|
|
|
THAAAAAARRRRR SHE BLOOOOOWWSSSS!
Thanks for the help! its the Application.DoEvents() DOES help! I've used that before and must've forgotten that! Thanks a heap!
|
|
|
|
|
umm one more thing...
What do u mean "consider it a hack" in the following quote:
"If not, give it a try with Application.DoEvents() following rtb.Text=""; if that helps,
consider it a hack, and try to move the code following it into asynchronous execution
(a separate thread, or something based on timer ticks)."
Can u clarify that? Thanks! I'm not sure of the meaning of it.
|
|
|
|
|
GUI design rules include the requirement to be responsive at all times, resulting in a
maximum time any action on the GUI thread is allowed to take (some 10 to 30 msec).
If so, there is no need for DoEvents().
Longer operations should be executed in the background, on a separate thread (or
be chopped into smaller pieces and sequenced somehow, e.g. using timer ticks).
There is a pseudo-solution consisiting of calling DoEvents() once or several times
while inside some long method running on the GUI thread; this allows the GUI to update
itself to some degree, but does not offer full responsiveness, hence it is a hack.
There are other requirements, such as:
lengthy operations should indicate they are running (the bare minimum is a WaitCursor);
lengthy operations should show a decent progress indication (Windows often fails to do
that itself);
lengthy operations should be cancellable.
Of course it is up to the designer how far to carry this; it does influence user's
experience tho.
|
|
|
|
|
Hmm thanks for the informative response. I've learned something new.
|
|
|
|
|
Hi,
I have populated a hashtable called CacheHashTableForwards.
This is how the hashtable gets populated:
CacheHashTablesForwards.Add(IndexName, code)
...
Now I would like to sort this data which is inside the Hashtable.
Not sure if this is a good approach but I use an ArrayList to do this as follows:
CacheHashTablesForwardsArraySorted = new ArrayList(CacheHashTablesForwards.Keys)
As you can see, The sorted array does not contains the other column, i.e. code
How can I properly sort using the arraylist.
Thanks
|
|
|
|
|
Hi,
your ArrayList CacheHashTablesForwardsArraySorted is NOT sorted:
1) the Keys property of a hashtable returns an ICollection containing all the keys, but
MSDN clearly states "The order of the keys in the ICollection is unspecified"
2) giving it a name ending on "Sorted" doesnt do it either.
So you must explicitly sort your ArrayList.
Afterwards, you can enumerate the sorted list, and use the hashtable to look up the
corresponding values.
The alternative is to use a SortedList instead of a HashTable; that one does it all.
|
|
|
|
|
Hello again,
I am now fully using sortedList()
This seems to be what I was looking for.
What is the difference between hashtable and sortedlist apart from the sort please?
|
|
|
|
|
Well, the MSDN documentation is rather abundant on these. Havent studied it in detail.
Seems like SortedList uses just two arrays (and hence needs frequently copying stuff
to insert/remove items), think of it as a normal List that makes sure it remains sorted
at all times, whatever the cost.
HashTable does not care about sorting, it applies a bag of tricks for maximum
performance: it uses a hashing scheme, and linked lists
so it offers best performance especially for large collections or frequent inserts/removals.
|
|
|
|
|
arkiboys wrote: CacheHashTablesForwardsArraySorted = new ArrayList(CacheHashTablesForwards.Keys)
Assuming 'IndexName' implements IComparable, then you can simply add:
CacheHashTablesForwardsArraySorted.Sort();
|
|
|
|
|
I begin learn C#. in C# do not have keyword ReDim Preserve and I wonder how can I change the code below in to C#.
Dim i() as string
Redim i(0)
i(0)= "abc"
ReDim Preserve i(2)
i(1) = "you are the best"
i(2) = "thanks"
|
|
|
|
|
LyBun wrote: C# do not have keyword ReDim Preserve
So, what does it do?
Upcoming events:
* Glasgow: Mock Objects, SQL Server CLR Integration, Reporting Services, db4o, Dependency Injection with Spring ...
* Reading: Developer Day 5
Ready to Give up - Your help will be much appreciated.
My website
|
|
|
|