|
Hi all.
I've searched through the forums but couldn't find an answer.
I have a rich text box (but the question stands even for "simple" text boxes),
and I would like to get the cursor's position within it.
Something like "line X column Y", or even just "char Z".
Any suggestions?
In particular, I'm trying to get to this info from the
handler of a mouse click event on the rich text box
--just in case the System.Windows.Forms.MouseEventArgs parameter can help
Thanks in advance,
F.O.R.
|
|
|
|
|
Well, so far here's what I found... if anyone has any better idea, feel free to post
<br />
<br />
int ndex = this.rBox_MarkedUp.GetCharIndexFromPosition(<br />
new System.Drawing.Point(e.X, e.Y));<br />
int line = this.rBox_MarkedUp.GetLineFromCharIndex(ndex);<br />
ndex is now the 0-based index of the char clicked
and
line is the number of the line (0-based as well).
We now return to the usual stream of questions
Thanks,
F.O.R.
|
|
|
|
|
Hi.
I just went thru this as well, but this is what i worked out. it's basically the same thing you already figured out.
private void rtb1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)<br />
{<br />
leftMouse(e.X, e.Y);<br />
}<br />
<br />
private void leftMouse(int X, int Y)<br />
{<br />
posStart = rtb1.GetCharIndexFromPosition(new Point(X, Y));<br />
}
|
|
|
|
|
Can you use functions like sprintf in c#??
If so, what namespace would you need to use them??
Because you can't do #include <stdio.h>
Or can you???!!!!????
|
|
|
|
|
Why not just use String.Format?
|
|
|
|
|
There is a nice section in the C Runtime Lib docs on MSDN that shows you exactly how the functions maps. Sorry no link.
leppie::AllocCPArticle("Zee blog");
|
|
|
|
|
|
Hi !
I'm new to this whole .NET framework stuff. I want to implement "Office XP Task Panel" like functionality and
how to attached two windows.
Thanks & Regards
Sanjay Rastogi
|
|
|
|
|
Dear sirs,
I would like to get more information about SingleCall servers like:
1- Is it possible to persist data in SingleCall server ? If so, how ?
2- Is it possible to keep a thread running indefinitly in a SingleCall
server ?
3- I need to develop a SingleCall server that keep several threads
running, to monitor something, like a Process Scheduler, for example.
My questions are:
- When (and where) do I need to start them ?
- When (and where) do I need to stop them ?
- How long will them still running ?
4- In a SingleCall server, is it possible to share data among server
calls using static variables ?
Thank you very much.
Marcos.
|
|
|
|
|
Hi friends,
Is there any new class,namespace now available with C# to invoke win32 APIs like SendMessage?
VikramS
|
|
|
|
|
You can easily declare Windows APIs in your code. For instance, SendMessage would be:
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
This article[^] has a large number of Win32 constants, functions, and structures declared.
"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
|
|
|
|
|
I'm having a little difficulty with the set accessor. I'm working on a template-based site design and trying to use the set accessor to set the document's title. The problem is that it's not setting the title and I can't seem to figure out what I'm missing. Here's some sample code:
---
ControlBase.cs
---
public class ControlBase : System.Web.UI.UserControl
{
private string _strTitle;
public string Title
{
get
{
return _strTitle;
}
set
{
_strTitle = value;
}
}
}
---
Default.aspx
---
<%@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false"
Inherits="namespace.PageBase" %>
...
<title><asp:literal id="litTitle" runat="server"></asp:literal></title>
---
Default.aspx.cs
---
public class PageBase : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Literal litTitle;
private ControlBase _ctlContent;
private void Page_PreRender(object sender, System.EventArgs e)
{
if (_ctlContent.Title != string.Empty)
{
this.litTitle.Text = _ctlContent.Title;
}
}
}
---
Default.ascx.cs
---
public class Default : ControlBase
{
private void Page_Load(object sender, System.EventArgs e)
{
this.Title = "This should be the title of the document";
}
}
|
|
|
|
|
your class is fine. its how your populating it freom the asp page is the problem.
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Thanks for your reply. I solved my problem by adding an EventHandler for Page_PreRender to the PageBase class.
|
|
|
|
|
Hi !
I'm new to this whole .NET framework stuff. Till now I was working with a team by some CAE projects. Our programs have been using binary files to store results and datas. So now I decided to write an implementation of reading these binary files in C#. In Delphi it look something like that:
- define a packed record
- write it to the stream with TStream.Write() method.
The TStream.Write() method took two arguments: one was a reference to a buffer and second was the buffer size.
As far as I can see there is no such possibility to read a whole bunch of data at-once like this. Can you please tell me how do I do that (write a bunch of data directly to the stream) using the .NET framework architecture ?
The goal is to create a next version of these apps that are taking advantages of the .NET framework and the C# programming language (which is btw really more readable than the Pascal syntax for me) but leaving the possibility to read old projects by new users.
Best regards - Matthias Hryniszak
|
|
|
|
|
Doing so isn't very wise because it can easily break by the addition, removal, or changing of position of an element. Every C book I've read has also pointed out that doing so is a bad idea.
Because it is a bad idea (and generally mis-used) the framework doesn't support it in the form you are looking for. The alternative is to use the Serialization classes, but since you have an existing format to follow those won't work for you.
The next best thing is to just read the data in and interpret it as you go. I'm not aware of how Delphi/Pascal format binary data so I can't comment on any differences. But if memory serves Pascal uses length-prefixed strings instead of null-terminated strings. This could potentially be one problem you'll encounter.
I hope that gives you some direction on where you should go from here.
James
At Jethro Tull's August 28, 2003 concert Ian Anderson mentioned that the group would be performing a medley of title tracks. The songs were "Songs from the Wood", "Too Old to Rock and Roll; Too Young to Die"; and from the Heavy Horses album, "Stairway to Heaven"
|
|
|
|
|
I forgot to mention that if you didn't know, the Stream object has support for reading/writing an array of bytes to the stream (getting the bytes to be in the correct format for reading/writing is the issue).
You can use the BinaryWriter/Reader class to read/write the basic data types in a binary format. You can use a class extending from TextWriter/Reader to do the same with a file in a text format.
James
At Jethro Tull's August 28, 2003 concert Ian Anderson mentioned that the group would be performing a medley of title tracks. The songs were "Songs from the Wood", "Too Old to Rock and Roll; Too Young to Die"; and from the Heavy Horses album, "Stairway to Heaven"
|
|
|
|
|
I got that - the reason I didn't wanted to use it is that it supports only reading of a single data at once instead of a whole record. As for now I see that I'll have to create some methods that read/write a bunch of fields decomposing it to silgle fields.
Anyway - thnx a lot
Matthias.
|
|
|
|
|
Matthias,
If you want to do it the old way, you can define a structure that mirrors what you want, and then use unsafe to copy the data from a byte array to the struct:
MyStruct myStruct;
byte[] data = readdata(sizeof(myStruct));
fixed (byte* pData = data)
{
myStruct = *((MyStruct*) pData);
}
This will require unsafe code and full trust when you execute, and works only if you don't have any reference types (like strings or arrays) within the struct.
|
|
|
|
|
I know the name of the form but I have to create it usig strings how to do in reflection?
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
You can use the static method, Type.GetType , passing in the full class name of your form. Assuming that assembly has been loaded into the AppDomain a Type object for your form will be returned.
You can then use one of the Activator.CreateInstance overloads to create a new instance of the class represented by that Type object. Cast the returned object back to a Form and you can use it as normal.
public Form GetForm(string className)
{
Form form = null;
Type formType = Type.GetType(className);
if( formType == null )
return null;
form = (Form) Activator.CreateInstance(formType);
return form;
} Its untested, but that should work for you.
James
At Jethro Tull's August 28, 2003 concert Ian Anderson mentioned that the group would be performing a medley of title tracks. The songs were "Songs from the Wood", "Too Old to Rock and Roll; Too Young to Die"; and from the Heavy Horses album, "Stairway to Heaven"
|
|
|
|
|
James T. Johnson wrote:
Type formType = Type.GetType(className);
Now how many times has that worked for you? MIne doesnt 99% of the time.
leppie::AllocCPArticle("Zee blog");
|
|
|
|
|
leppie wrote:
Now how many times has that worked for you?
Personally, I've never used it. Usually I use reflection to load the assembly and get all of the Type objects that match certain criteria so I don't need to use Type.GetType. Type.GetType is just much easier to type out than to go through all the reflection code
James
At Jethro Tull's August 28, 2003 concert Ian Anderson mentioned that the group would be performing a medley of title tracks. The songs were "Songs from the Wood", "Too Old to Rock and Roll; Too Young to Die"; and from the Heavy Horses album, "Stairway to Heaven".
|
|
|
|
|
|
I have a class with 10 properties. Within one of the class methods, I'd like to iterate through the 10 properties rather than referencing each one manually. So instead of this:
this.property1=
this.property2=
this.property3=
I'd like to do something like this:
foreach( property p in this.properties )
{
p.value =
...
}
Is there a way to do this?
Using reflection, I can get the properties and iterate through them, but it's a blank object. I want to be able to do that with an existing object where the properties contain valid data values.
Thanks in advance.
|
|
|
|