|
I know what your problem is, and I'm saying that you're solving it the wrong way. There is already support for tooltips in the List View common control - even if you don't use the system's provided tool tips (like you seem to be using a balloon tool tip). The idea is to draw upon this behavior rather than trying to hack a solution.
If you really want to use the mouse move events, read about the List View common control at http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/listview/reflist.asp[^]. If .NET isn't raising the MouseMove event for the list client area, you're going to have to make it do so.
Frankly, though, I don't even know why you're not getting MouseMove events when in the ListView . I ran the code successfully below with no problems:
using System;
using System.Windows.Forms;
public class Test : Form
{
static void Main()
{
Application.Run(new Test());
}
public Test()
{
ListView view = new ListView();
this.SuspendLayout();
this.Controls.Add(view);
view.Dock = DockStyle.Fill;
view.MouseMove += new MouseEventHandler(view_MouseMove);
this.Text = "Test";
this.ResumeLayout();
}
private void view_MouseMove(object sender, MouseEventArgs e)
{
Console.WriteLine("{0}, {1}", e.X, e.Y);
}
} I got coordinates the entire time.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
There are some similar examples here on CodeProject. Just search for keywords like "ListView". You can also try googling. It's all a matter of research.
The thing that you'll really need MSDN for - and to make finding message IDs easier, download the core Platform SDK from there - is to find information about Windows messages and those specific to the common controls. Familiarity and experience with Win32 programming will definitely help.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hey!
Thanks for al you help.
I have now manage to fix this problem, but not the way you explained.
This was done: I created a event(lookt in the MSDN how to do) in the controller that reacted on MouseMove over the ListView, and this works fine. A saml problem was that the mouse point wasent sent in the event(didnt know how to do that) so i med a GET funktion instead.
I most say that i realy fill lika a newbie when i read your solutions, thay are not easy to understand.
Best Regards
Jimmy
|
|
|
|
|
First, there is no "controller". I'm guessing you mean "control". The MouseMove event must be handled. Are you saying this entire time that you were NOT actually handling the MouseMove event? I thought you said it wasn't be fired when you moved the mouse from within the ListView ? I'm sorry, but I just don't understand what you're even having problems with.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
hehe..
I Created a "Windows Control Library" in this i created a listView(User List), let us call this "Windows Control Library" by the name "UserControl".
I Created a Windows Application with a form, i added the new control(UserControl) in to the form. Now i wanted the control to respond on any MousMove over the control.
so i created the MouseMove on the control in the form, but it wount react when i was moving over the listview
in the controler, it only reacted when the mouse was moving outside the listView in the UserControl.
So i hade to creat an event in side the UserControl that reacts to MouseMove on the listView.
And then i added the UserControl to my form again and now i could jus my own made event that rects when the mose is Moving over the list View in the UserControl.
Maby i dident make my problem clear enouth, sorry for that
Best Regards
Jimmy
|
|
|
|
|
How do I put this "( ) - " in a textBox lol.....
------------------
I'm naked under my clothes...
|
|
|
|
|
textBox.Text = "( ) - ";
Is that what you mean?
Happy Programming!
WWW::CodeProject::BNEACETP
|
|
|
|
|
It must have been a really long day!
I'm not sure what you are doing, but you have the answer in your question to some degree! A bit harder question would be how to put a "\" in a textbox!
To apply your question to a possible development problem let's display numbers which will be contained in parenthesis and a "-" if the number is negative.
private void SetNumber(TextBox displayArea, decimal balance)
{
displayArea.Text =
balance >= 0 ? balance.ToString() : string.Format("( {0} )-", balance.ToString());
}
_____________________________________________
tagline under construction!
|
|
|
|
|
I have a Windows Form system which has been in development for about a year. In the VS 2000 platform we incorporated a number of System.Diagnostic.Trace.WriteLineIf statements to trace behavior between the client and the remote communication library it connects with. In the production environment then, one can run the app with the /Debug switch fed into it and we can see what is occuring and which model it bombed on.
All worked great and it was becoming a quick selling point to the developers since this tool would become used by both them and the business analysts.
Now comes VS 2003 and a few weeks ago I got my new laptop and my new install of VS 2003. Woohoo. But when I ran into a situation, and wanted to debug it, the dbgView viewer sat quietly.
We ran a very simple test just a few minutes ago:
I constructed a C# console app.
I have my Main issue a Console.Write, a Trace.WriteLine, and a Debug.WriteLine. Only the Console.Write appeared anywhere!!!
Finally....we created a direct hook into the debug writer with DllImport and added that to the list of outputs. Voila, the raw debug writer created the message without problems.
am I going crazy or is there a 1.1 bug that wasn't there in 1.0???
The application test:
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace Bomb
{
class Class1
{
[DllImport("Kernel32.dll")]
static extern void OutputDebugString(string msg);
[STAThread]
static void Main(string[] args)
{
Console.Out.Write("This is a test");
Trace.WriteLine("This is a test");
Debug.WriteLine("This is a test");
OutputDebugString("This is a freekin test");
Console.Read();
}
}
}
_____________________________________________
Of all the senses I could possibly lose, ..oh the hell with it! This problem is making me loose my sanity.
|
|
|
|
|
This has to do with TraceListener implementations. The DefaultTraceListener is added to Debug.Listeners and Trace.Listeners by default. VS.NET's Output window will show these messages using the DefaultTraceListener , but the Console won't (and never did, unless you had your console set up as a debugging output device for the OutputDebugString API). I'm sure you knew this, but I include it for posterity (since this is a community forum).
Are you running this test application in VS.NET 2003 or in a new instance of the command shell?
Finally, make sure your application actually adds that TraceListener implementation. Perhaps when you recompiled / ported your code to .NET 1.1 some things got misplaced / forgotten?
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath,
Heath Stewart wrote:
I'm sure you knew this, but I include it for posterity
Yeh...the Console.Write was just to flag we were entering the code that would generate the trace messages.
After doing more testing we discovered that it is a change in how VS implements the TraceListeners. In VS 2000 -- your trace messages went to the Output window -- but apparently it was also acted as a pass-thru so that such debugging windows as DBGView would see the messages as well.
In VS 2003 the TraceListener deployment traps the trace messages and limits them to only the VS window. As a result, when I look at the viewer window I see no trace messages. However, when I run the executable outside of VS2003 and run DBGView, I see all of my trace messages as expected. (I'm not in the habit of staring at my VS Output window!)
This behaviour was a bit disconcerting since DbgView was the main debugging tool we were using to see debug trace messages coming from our remote component library.
A departure from the normal behaviour, often causes a developer to wonder if this is a bug instead of a feature.
_____________________________________________
Of all the senses I could possibly lose, It is most often the one called 'common' that gets lost the most.
|
|
|
|
|
Actually, I think you mean VS 2002.
Anyway, I looked at the IL for the System.dll assembly and see that the v1.1.4322 of the DefaultTraceListener still uses the OutputDebugString API. I'd be willing to guess that installing VS.NET 2003 somehow screwed up some settings that register DbgView as a valid debugger in Windows.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi,
is there any simple way to set a CPropertySheet's background color? for example to black or anything?
and the other q is how can you do the same with the CTabCtrl?
thx in forward...
|
|
|
|
|
Wrong forum. Try the Visual C++ forum. This is the C# forum - a language targing the CLR, part of the .NET Framework.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi
I am working on building a C# library where I need to read an image (a JPEG disk file) into a string for further manipulation.
The image has been read into the variables as long as I read it into either byte[] or char[]. But When convert the byte[] or char[] into a string ( by appending each byte or char) I have found that most of the non printable characters are converted to some junk.
Can anyone has a solution on reading an Image (binary data) into a string and retain its original data intact.
thanks
AliIMCIn
|
|
|
|
|
You can encode your bytes as Base64. I'm not sure if .net framework has the ability to do that, but you can easily do that.
Here is an article that describes it: http://www.kbcafe.com/articles/HowTo.Base64.pdf
|
|
|
|
|
.net has base64 encoding:
byte[] data = ...;
string jpgData = Convert.ToBase64String(data);
to convert back to bytes
byte[] data = Convert.FromBase64String(jpgData);
|
|
|
|
|
You can also use the ToBase64Transform and FromBase64Transform , which are a little more stream-friendly. These can be found in the System.Security.Cryptography namespace. The Convert class is okay when you're dealing with small buffers, but potentially large buffers like would be required for images you'd want buffer when possible. For instance, when sending data like this across the wire, you could buffer the bytes to a NetworkStream , transforming the byte[] array to base64 and sending that across the wire (also see Encoding to send this transformed byte[] buffer in the encoding of your choice, like UTF-8 for "application/x-www-form-urlencoded" MIME for an HTTP POST).
See the FromBase64Transform constructor in the .NET Framework SDK for an example.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
See if this is what you want:
System.IO.FileStream stream = new System.IO.FileStream("Image.bmp", System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
stream.Close();
string str;
for(int i=0;i<stream.Length;i++)
str += buffer[i].ToString()+" ";
Mazy
You're face to face,
With the man who sold the world - David Bowie
|
|
|
|
|
No, use base64 encoding. See the replies above. Coming up with your own encodings will kill you in the end because nothing else will understand your encoding so it can't decode it. Besides, this will create unnecessary string parsing (you'll have to parse each space-separate integer and convert that to a byte before you can even create your buffer, not to mention that it'll take an extra parsing process to even figure out how big the buffer should be).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Ok.
Mazy
You're face to face,
With the man who sold the world - David Bowie
|
|
|
|
|
Hi
Can any1 tell me how I can print "UnPrintable" ASCII characters in a Textbox ???
raheel
|
|
|
|
|
If they aren't "printable", then they'll be displayed as square boxes (typically). Either way, you must escape the characters. For the Unicode character set (which .NET uses internally for strings), you can use "\uXXXX" - where each "X" represents a hexidecimal value - with the Unicode character (which could be in the ASCII range, such as "\u000a" for the line feed (decimal value 10). You can also use "\xX" - where "X" is a variable number of hexidecimal values - like "\x0a" (decimal value 10), which is also the line feed. Depending on other properties in your TextBox , these might in fact insert line feeds and tabs.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
hi,
i want to append a tsruct every x seconds to a binary file, but i don't get it.
here is the code of the struct:
<br />
public struct abc<br />
{<br />
public DateTime abcDate;<br />
public float abcFloat;<br />
}<br />
how can i append this struct to a binary file?
Thanks,
Dennis
|
|
|
|
|
Open the binary file into a Stream (or a derivative, like FileStream ) and write the two members. You don't need to include a header if the struct fields are fixed-width (the DateTime field is always 64 bits if you use Ticks or 32 bits if you use Milliseconds , and the Single (float) is always 32 bits). If you use a BinaryWriter (can take the Stream you opened as an argument), you can use the overloaded Write method to easily write these fields:
FileStream stream = File.Open("path.bin", FileMode.Append, FileAccess.ReadWrite, FileShare.Read);
BinaryWriter writer = new BinaryWriter(stream);
while (false)
{
abc val = new abc();
val.abcDate = DateTime.Now;
val.abcFloat = 1.0f;
writer.Write(val.abcDate.Ticks);
writer.Write(val.abcFloat);
Thread.Sleep(1000);
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|