|
|
Hi, everybody.
Could anyone help me with this subtle and foolish question?
My question is: How do you turn on and off the insertion point(blinking cursor)like in TextBox in C#?
Thanks.
|
|
|
|
|
Focus another control. Alternately, you could try P/Invoking the HideCaret[^] method of the Win32 API. No idea if that will work though.
|
|
|
|
|
Are you using a TextBox? Designing your own control? What?
Do you want it off? Or blinking?
|
|
|
|
|
No, I am justing creating a window form and dragged/dropped a TextBox onto the form.
And when the form in running I want to hold the insertion point off until user clicks either (EDIT) or (Add) button is clicked.
At that point I want the user click any Input TextBox to type in any data the user desires in the TextBox.
As you all expect, as soon as the window is running and when you click the TextBox, eventhough no (EDIT) or (ADD) button
is clicked, you will see the cursor (inertion point) is blinking ready to accept the input.
I want the cusor to be off until the user clicks either (EDIT) or (ADD) is clicked.
Is my description clear enough?
Thanks.
|
|
|
|
|
Seems you want TextBox.Enabled=false or even TextBox.Visible=false
until (EDIT) or (ADD) are clicked.
Luc Pattyn
|
|
|
|
|
Not exactly. I know TextBox.Visble=false; and TextBox.Enabled=true;
This is not exactly what I want.
Specifically after you creating a TextBox and when you run the form
you'll see the cursor is blinking in the TextBox. ( when there is only one TextBox in the form for example).
I want to turn off the blinking cursor off or make it disappear for certain period of time
until the user do somthing.
That's all I want. It seems so simple but I could not find anything about it in C#.
Thanks.
|
|
|
|
|
I'd use Enabled=false, while disabled the TextBox won't get Focus.
|
|
|
|
|
I understand you would like to have TextBox.Enabled=true but if you are trying to control the user's actions, you need to make it very clear to them what is expected. Upon loading or clearing the form, set the data entry controls read-only. Then upon clicking the [Add], [Edit] or whatever the button is called, the first thing you do is enable your text boxes, radiobuttons and any other controls the user is to access for data entry.
If you just hide the cursor, the user clicks on the TextBox and says "What's wrong? The cursor disappeared!" If it is disabled, it is pretty clear the only option they have is to tell the program what they want to do such as [Add], [Edit], etc.
I usually have two core methods in most of my forms: Clear() and SetReadOnly(bool value). Upon loading the form or saving a record Clear() is called which sets all the default values for the fields. One of the last lines in Clear() is the call SetReadOnly(true); to disable all the controls. The only option the user has at this point is to click [New] or [Cancel]. If they click [New], I call SetReadOnly(false); and set the focus on the first field I want them to fill in (i.e. TextBox.SetFocus();).
Just a suggestion.
|
|
|
|
|
Suppose your form has 3 controls . one edit box ,and 2 other buttons. put tabindex of one of the buttons to zero in the form load event. So that the button will get focused.
Hopes this helps.
If u can Dream... U can do it
|
|
|
|
|
If you do that way the focus is certainly on one of the buttons.
But at that moment if click the TextBox you will see the blinking cusor in the TextBox.
This is not what I want. I don't want the blicking cursor show up in the TextBox until
I click either (ADD) or (EDIT) button is clicked.
Is this clear to you?
Thanks.
|
|
|
|
|
i understood now. So try changing focus on Textbox1_mouseclick , like below
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
fousButton.Focus();
}
In my case it workd. however it is not a good solution. i am searching for some other good solution with IMessageFilter.
If u can Dream... U can do it
|
|
|
|
|
hi I tested it with IMessageFilter. Its working fine.
Try adding a MessageFilter using Application.AddMessageFilter(new TestMessageFilter());
in class TestMessageFilter handle the mouse Down message(WM_LBUTTONDOWN)
like this
public class TestMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
// Blocksmessages relating to left ms button.
if (m.Msg == 0x0201)//WM_LBUTTONDOWN
{
Control c = Control.FromHandle(m.HWnd);
if(c.Name =="textBox1") // ur textbox name
return true;
}
return false;
}
}
Hopes this helps
If u can Dream... U can do it
|
|
|
|
|
I'm currently working on a simple web browser, but i can't get the simplest thing: how do i convert the text in my text box to type system.url? the web browser works and when i click a link the text box is updated, but i cannot get what's in the text box to go back to the web browser (which should be operated by a button).
Thanks in advance.
P.S. I am thinking the next thing i will try to add will be the source HTML. What property do i have to check to get this? Or what method should i use?
|
|
|
|
|
I assume you mean System.Uri, not System.Url.
Uri uri = new Uri(textBox.Text);
Alternately, you can use the TryCreate static method of the Uri class to attempt to create a URI. Unlike the above method, which throws an exception if the text of the text box is not a valid URI (for instance, if you forgot to type the "http://" part of www.google.com), TryCreate will tell you if it's a valid URI without throwing any errors:
Uri validUri;
bool isValidUri = Uri.TryCreate(textBox.Text, UriKind.Absolute, out validUri);
if(isValidUri)
{
}
p.s. You don't need to convert the text to System.Uri in order to call webBrowser.Navigate. Look at the System.Navigate method overloads[^], notice that one of them takes a string. With that, you can just call
browser.Navigate(textBox.Text);
|
|
|
|
|
Thanks. It works! and I did mean URI, thanks for telling me. So do you know how I could access the HTML of the webBrowser? Thanks.
|
|
|
|
|
pls look axWebBrowser1.Document (IHTMLDocument's type) .
If u can Dream... U can do it
|
|
|
|
|
What is the difference, and why is one better then the other?
I mean indexer vs
public foo Items(string name)
{
some code here;
return respective item;
}
Thanks,
Vandra Akos
|
|
|
|
|
on the righthand side of a statement, a function can perfectly replace an indexer.
On the lefthand side it can't.
var = object[index];
object[index] = value;
object[index]++;
Of course, one can live without indexers (as C and Java have proven) but
they make it possible to improve code readability.
-- modified at 17:07 Thursday 28th December, 2006
Luc Pattyn
|
|
|
|
|
I'm working with 2 forms Form1 and Form2. Logically Form1 is a parent form and Form2 is where a data input is requested from user. When Form2 opened upon Form1, user enters some data and Form2 exits. When Form2 exits, the datagrid in Form1 must be updated with new value.
I'm trying to update datagrid with a code inside Form2.cs :
//inside Form2.cs, a method of click of a button
...sql operations bla bla
Form1 f = (Form1)this.owner;
f.fillDataGrid(); // this method belongs to Form1
this.Close();
But..... Datagrid doesn't always update, sometimes works. Any idea?
A non-smart way I tried, to use focus event; but it doesn't focus anyway. Plz help
may the force be with you, always
|
|
|
|
|
Hi,
in this scenario, define your entity object as a class, let Form1 have an static object of that class, in form two set the value for the static instance, then when u go back to form1 , do the data binding..
like this..
Form1
{
public static CEntity objEntity;
someclick()
{
Form2.showDialog()
Datagrid.databind(objEntity)
}
}
CEntity
{
Public string column1;
Public string column2;
}
Form2
{
someevent()
{
Form1.objEntity.column1 = textbox1.Text;
Form1.objEntity.column2 = textbox2.Text;
}
}
Cheers
|
|
|
|
|
Form1 f = (Form1)this.owner;
f.fillDataGrid(); // this method belongs to Form1
this.Close();
if these code wrote in the form2's closing or closed event?
I want to make some friends here
|
|
|
|
|
yes, it's written in closed event in a different solution..
|
|
|
|
|
I have an that on startup I want the main form to be hidden and activated from System Tray on Click. It works but the main form is always visible on startup????
Any help appreciated
Mike
|
|
|
|
|
Can be accessed to visible property from properties window in design view
|
|
|
|