• 0

[VB.NET] Textbox disabled colors


Question

I have this little app with a textbox that changes colors (text color and background color) depending on some parameters. I also have visualstyles enabled in my app like this:

Public Sub Main()
        Application.EnableVisualStyles()
        Application.Run(frmMain)
    End Sub

The problem is the following, I don't the user to be able to edit that field at all, and I can just put readonly = true, however, the user can select the text inside and the cursro carret will be there and I also don't want that. That can be fixed with enabled = false. However, if I put it like that, I can't change the text color... How can I achieve this?

Another thing, with Application.EnableVisualStyles() when the background color of the textbox is changed during runtime, there will be a 1pixel border line with the previous background color and if I move the cursor hover the textbox, that border will now have the correct color, I don't want that to happen too and if somehow I mange to fix the enabled = false and text color on the textbox the hover thing will not work and the border with the previous color will remain there.

Any thoughts on this 2 problems?

Link to comment
https://www.neowin.net/forum/topic/268052-vbnet-textbox-disabled-colors/
Share on other sites

11 answers to this question

Recommended Posts

  • 0
  bangbang023 said:
Why not use a label?

585249869[/snapback]

Label also have the same problem with me, i used to make animated buttons by using labels and when i disable the label, the label picture became gray scale ...... thanx nazgulled for opening that thread

  • 0
  bangbang023 said:
You should be able to get it to look like a textbox if you change the control color and such.

585249968[/snapback]

nope, it doesn't look the same... it's almost there, but not the same.... I could set FormBorderStyle = Fixed3D but it's not exactly the same and I don't really like it, but I guess I don't have a choice...

  • 0

You could just set focus to another control when the particular edit box receives focus. It?s messy but it should do what you want.

  private void textBox1_Enter(object sender, System.EventArgs e)
  {
  	button1.Focus();
  }

You can remove the border by sending the text box control the WM_MOUSEMOVE (0x0200) message using SendMessage. I can only provide a C# sample, not sure how to do it in VB.NET

// At the top
using System.Runtime.InteropServices;

// Somewhere in class
[DllImport("User32.dll")]
public static extern Int32 SendMessage(int hWnd, int Msg, int wParam, IntPtr lParam); 

// Code to change background
textBox1.BackColor = Color.Blue;
SendMessage((int)textBox1.Handle, 0x0200, 0, IntPtr.Zero);

Edited by virtorio
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.