|
How can I top/detop (TopMost property) and show/hide a window without activating it?
In C, there was the SetWindowPos() function that had an activate flag, but I don't see any such thing in .Net.
|
|
|
|
|
There's an always on top window in my app, but I have an annoying problem with it.
The window is just a normal window with TopMost set to true.
Now this works fine, but I want the window to dissappear if another app gets focus.
I tried pussing topwindow.Visible = true; in the Activate event and topwindow.Visible = false; in the Deactivate event, but these events get called even when another window in my app gets actiavted, so whenever I click on the topmost window, it dissappears because the main window gets deactivated.
Is there a way to prevent the topmost window from getting focus at all? (But still use it as normal, just no focus. By normal I mean still have it receive mouse clicks.)
Or some way to determine what window is getting focus in the Deactivate event?
Or some other way to fix this?
|
|
|
|
|
Nice to meet you here.
I hope I will do help you .
First Create a class with a namespace test
namespace test
{
public class GlobalVars
{
public static bool blVisible;
public GlobalVars()
{}
}
}
In topwindows ,set a Timer Component which watch the test.GlobalVars.blVisi
ble , When it is true , Ignore it , when it is false , set Visible to false
In the other Window , Set the blVisible to control the Global Variables;
I hope it will help you
|
|
|
|
|
No, that's not what I need. What I need is to know what window is getting activated, so I don't turn the topmost window invisible when I click on it.
|
|
|
|
|
Hi all
I have some question/problem using Lock {...} keyword. Suppose two differnt objects: A & B, each of which includes for example 5 references to 5 another objects. Now, I have two threads(ThreadA and ThreadB) that work on A and B and their including referenced objects. Now suppose that 3 of 5 references in A and B are the same(are referencing 3 same objects). I want lock these 3 shared referenced objects while one of mentioned threads is working on A or B.
Alos suppose that including references are stored in ArrayList s named al_A and al_B.
I think below code will only lock the arraylist object but not all including referenced objects:
<code>Lock</code>(al_A){
.....
.....
}
When working on al_A or al_B, how can I lock all corresponding included objects?
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
|
is below one of solutions?
<code>foreach</code>(<code>Object </code>o in al_A)
<code>Monitor.Enter</code>(o);
...
...
<code>foreach</code>(<code>Object </code>o in al_A)
<code>Monitor.Exit</code>(o);
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
Meisi wrote:
When working on al_A or al_B, how can I lock all corresponding included objects?
You have to lock each object as you attempt to work on it.
You should also be using lock on the ArrayList's SyncRoot object, this ensures that if you use either the Synchronized or ReadOnly wrappers you will be locking on the same object.
lock(al_A.SyncRoot)
{
foreach(object a in al_A)
{
lock(a)
{
}
}
}
James
"I despise the city and much prefer being where a traffic jam means a line-up at McDonald's"
Me when telling a friend why I wouldn't want to live with him
|
|
|
|
|
James T. Johnson wrote:
lock(al_A.SyncRoot){ foreach(object a in al_A) { lock(a) { // use a } }}
But by using above code, as I understand, every object in ArrayList al_A is locked and released one after another. What I want is locking all of them at the same time. Is below code the solution for me?
foreach(<code>Object </code>o in al_A)
Monitor.Enter(<code>o</code>);
...
foreach(<code>Object </code>o in al_A)
Monitor.Exit(<code>o</code>);
Don't forget, that's Persian Gulf not Arabian gulf!
|
|
|
|
|
Meisi wrote:
But by using above code, as I understand, every object in ArrayList al_A is locked and released one after another.
Correct
Meisi wrote:
What I want is locking all of them at the same time. Is below code the solution for me?
Yes, that would do it.
James
"I despise the city and much prefer being where a traffic jam means a line-up at McDonald's"
Me when telling a friend why I wouldn't want to live with him
|
|
|
|
|
I've hit a brick wall with this one..
I'm trying to perform a HttpWebRequest that posts form data to the target server - the problem is that the request *always* contains an Expect: 100-continue header, which on HTTP 1.0 servers results in a 500 error.
None of these seemingly obvious fixes work:
Set the HttpWebRequest.Expect property to null or String.Empty
Set the HttpWebRequest.ProtocolVersion to HttpVersion.Version10
Note that my class works perfectly with HTTP 1.1 servers, so I doubt there's anything I've done incorrectly in code. Also note that the problem only surfaces when you POST data to the server with the request, no post data = no problem.
Searching google for this problem has given me a couple of people that have hit the same problem, but not one valid workaround.
Help!
|
|
|
|
|
Hi,
Howto I can read and write section in .INF file with C#?
Please help me.
Thanks.
H.Dung.
|
|
|
|
|
|
Hi there. I need some help here.
I am trying to convert a sample application for learning purposes. But i am stuck to see this:
Select Case ShipPitchSM
Case Is > 0
ShipPitchSM = ShipPitchSM - Friction
If ShipPitchSM < 0 Then ShipPitchSM = 0
If ShipPitchSM > 0.03 Then ShipPitchSM = 0.03
Case Is < 0
ShipPitchSM = ShipPitchSM + Friction
If ShipPitchSM > 0 Then ShipPitchSM = 0
If ShipPitchSM < -0.03 Then ShipPitchSM = -0.03
End Select
Select Case ShipYawSM
Case Is > 0
ShipYawSM = ShipYawSM - Friction
If ShipYawSM < 0 Then ShipYawSM = 0
If ShipYawSM > 0.03 Then ShipYawSM = 0.03
Case Is < 0
ShipYawSM = ShipYawSM + Friction
If ShipYawSM > 0 Then ShipYawSM = 0
If ShipYawSM < -0.03 Then ShipYawSM = -0.03
End Select
Select Case ShipRollSM
Case Is > 0
ShipRollSM = ShipRollSM - Friction
If ShipRollSM < 0 Then ShipRollSM = 0
If ShipRollSM > 0.03 Then ShipRollSM = 0.03
Case Is < 0
ShipRollSM = ShipRollSM + Friction
If ShipRollSM > 0 Then ShipRollSM = 0
If ShipRollSM < -0.03 Then ShipRollSM = -0.03
End Select
Any help?
How do you code that in c#? I try my best to place conditions in case statements, but compile errors.
Thanks.
Regards,
Chua Wen Ching :p
|
|
|
|
|
if (ShipPtchSM < 0)
{
...
}
else if (ShipPtchSM > 0)
{
...
}
etc...
Every line of code is a liability - Taka Muraoka A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
You have to use if, elseif, and else.
if(ShipPitchSM>0)
{
ShipPitchSM-= Friction;
ShipPitchSM = Math.Max(0,ShipPitchSM);
ShipPitchSM = Math.Min(ShipPitchSM,0.03);
}else
{
ShipPitchSM += Friction;
ShipPitchSM = Math.Min(0,ShipPitchSM);
ShipPitchSM = Math.Max(-0.03,ShipPitchSM);
}
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
Ah, even better than my example. Very nice.
Marc
Every line of code is a liability - Taka Muraoka A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
But you've got the best idea in your second post.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
Thanks everyone.
So switch/case does not accept conditions... i need to do if/else for it!
Thanks a lot.
Regards,
Chua Wen Ching :p
|
|
|
|
|
Better yet:
AdjustParam(ref double param, double friction)
{
if (param < 0)
{
param=param + friction;
if (param > 0) param=0;
if (param < -0.03) param=-0.03;
}
else
if (param > 0)
{
param=param - friction;
if (param < 0) param=0;
if (param > 0.03) param=0.03;
}
}
then call:
AdjustParam(ref ShipPitchSM, Friction);
AdjustParam(ref ShipYawSM, Friction);
AdjustParam(ref ShipRollSM, Friction);
and there's other optimizations you can make too. Get then sign of the parameter and you can eliminate the if-else clause. Put the bounds checking in a separate helper function. Things like that.
Marc
Every line of code is a liability - Taka Muraoka A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
you can easily do it with the <color="blue">switch statement ( it is really an equivalent to Select Case , just have to modify it slightly to tell if it's a + value or not, here's a simple example i made.
C#:
<font color="blue">private</font> <font color="blue">void</font> val() <br> { <br> <font color="#0000FF">int</font> x =-1; <br> <font color="#0000FF">switch</font>(x.CompareTo(0)<0) <br> { <br> <font color="#0000FF">case true</font>: <br> MessageBox.Show("the value is less than zero!"); <br> <font color="#0000FF">break</font>; <br> <font color="#0000FF">case false</font>: <br> MessageBox.Show("the value is greater than zero!"); <br> <font color="#0000FF">break</font>; <br> } <br> } <br>
hope it helps to understand the switch statement a bit more
|
|
|
|
|
This is not exactly equivalent though.
In the original code, the test is '< 0' and '> 0'. Your code is '< 0' and '>= 0', causing an inneficiency when x==0 (not that the original code was very efficient to begin with!)
If you wanted to preserve the logic of the original test with a switch statement, you would need to properly qualify the test if a trinary operator:
switch (x < 0 ? -1 : x > 0 ? 1 : 0)
{
case -1:
...
case 0:
...
case 1:
...
} Hope that helps to understand how refactoring needs good test cases!
Marc
STL, a liability factory - Anonymously A doable project is one that is small enough to be done quickly and big enough to be interesting - Ken Orr
Latest AAL Article
My blog
|
|
|
|
|
Why don't you use switch ()
|
|
|
|
|
I'm writing a small app for my own use (mostly to play with an XML datastore) I'm trying to add a node to the xml document. This works fine, except that it keeps on adding an empty xmlns attribute to the new nodes. Is there anyway of stopping this?
I am contructing the xml node from a string
<NewNode>
<DataNode />
</NewNode>
and inporting it into the xml document like this.
<br />
xmlContactsList["Root"].AppendChild(NewNode);<br />
But the result I keep getting is
<doctype tag>
<Root>
<NewNode xmlns="">
<DataNodes />
</NewNode>
</Root> Is there anyway of getting rid of the xmlns attribute? The root node already has the correct value for this.
|
|
|
|
|
i have a form which includes search parameters at the top.
i want the datagrid to begin directly under the search fields.
the data grid needs to stretch from left to right no matter what size the form is, but i do not want to dock it to the bottom.
when i dock it to the bottom, then maximize, there is a big gap between the datagrid and the search fields.
is there any way to align the top of the data grid to a point, and still make it stretch from left to right no matter what the size of the form is?
|
|
|
|