|
Thanks that solved the issue!
|
|
|
|
|
I'm maintaining code that has a VB6 TextBox as an ActiveX control running in an ASP .Net 2.x web app. For a host of reasons the web page has to run in Compatibility Mode or the ActiveX controls won't run in IE 10 + 11. But for this particular control I see the text in the multiline TextBox truncated to only the first character (and even that is slightly chopped off) at certain zoom factors (including 100%) in IE 10 and 11 in Compatibility mode. Runs fine in IE 9 and earlier. If I zoom the page it redraws fine at all zoom factors. But if I refresh the page, it fails again.
This gets more bizarre. The truncation is not just the text but the background fill as well. Only the upper left approx 10x10 px redraws.
I have tried to force the element to redraw itself using (see http://stackoverflow.com/questions/8840580/force-dom-redraw-refresh-on-chrome-mac):
var item = document.getElementById('myItem');
var sVal = item.style.display;
item.style.display = 'none';
item.style.display = sVal;
This works but ONLY if I use this code within my onKeyDown routine. It DOESN'T work if I call it in the window::onload routine. WTH?
I also tried setting item.runtimeStyle.visibility to 'hidden' and back to 'visible', but that didn't work at all.
Any suggestions on where I should look or what I should try?
Bill Cumming
modified 10-Apr-15 17:23pm.
|
|
|
|
|
Why are you using an ActiveX control from VB6? What features does it give you that the built-in <asp:TextBox> / <input type="text" /> / <textarea> elements don't have?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
The quick answer is cuz it's old code and the developers are long gone. Dunno if they knew about it.
Alas I have had this legacy project dropped in my lap. I don't know VB, ASP .Net or JavaScript, (I'm a C# kinda guy) so I'm clueless to know where to look in the plumbing between them all to know what to check.
I don't fully understand what extra behavior the ActiveX gave them - the events I see it handling are nothing special. Your suggestion sounds reasonable to me so I'll look into it. I would still like to know why it's failing though....
Thanks for the suggestion
Bill Cumming
|
|
|
|
|
Hello !
In this list of windows Messages : http://www.pinvoke.net/default.aspx/Constants/WM.html[^]
which is the message that has to do with pressing the Enter key and the TAB key?
I try with WM_KEYDOWN , but it seems that the enter and the tab key are not handled.
Thank you !
|
|
|
|
|
It's been a while since I did ought like this but the WM_CHAR message should contain the key that actually went "down" I think
|
|
|
|
|
I try the WM_CHAR too , but doesn't work for TAB and Enter.
|
|
|
|
|
Er.. yes it does... how are you checking for those keys
|
|
|
|
|
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_CHAR Then
Return
End If
MyBase.WndProc(m)
End Sub
End Class
all the other keys are blocked , but if TAB or Enter key is pressed then MyBase.WNDProc(m) is executed.
|
|
|
|
|
This will capture all of the keys using the ProcessCmdKey override rather than WndProc
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
Const WM_KEYDOWN As Integer = &H100
If ((msg.Msg = WM_KEYDOWN)) Then
Select Case (keyData)
Case Keys.Tab
Me.Label1.Text = "Tab Key Captured"
Case Keys.Enter
Me.Label1.Text = "Enter Key Captured"
Case Keys.Return
Me.Label1.Text = "Return Key Captured"
Case Else
Me.Label1.Text = keyData.ToString
End Select
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function But I really don't understand your problem as this also works for me.
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_CHAR = &H102
If m.Msg = WM_CHAR Then
Return
End If
MyBase.WndProc(m)
End Sub
|
|
|
|
|
Thank you !
The problem with my code is that all other keys are blocked for the control , except the TAB key and Enter key.
If you have test my code , you should see that for the control , all the other keys are blocked inside the IF . But for Tab key and Enter key , the IF condition is always false , and the standart WNDProc is executed.
|
|
|
|
|
sorry but I can't use your function ProcessCMD.
The reason is that I'm usng NativeWindow , and when I try to use your function , I get an error
'ProcessCmdKey' is not a member of 'System.Windows.Forms.NativeWindow'.
What can I do ?
This is my whole class that actually I'm using :
Class NW
Inherits NativeWindow
Public Sub New(hwnd As IntPtr)
AssignHandle(hwnd)
End Sub
Const WM_NCHITTEST As Integer = &H84
Const WM_CHAR As Integer = &H102
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NCHITTEST OrElse m.Msg = WM_CHAR Then
Return
End If
MyBase.WndProc(m)
End Sub
<pre>
End Class</pre>
|
|
|
|
|
Sorry - I'm about to head off to the airport and won't get a chance to look at this properly.
My advice is to post a question in Quick Answers forum - put in a link to this thread and include the code that you have posted here (you could also post the code I suggested and explain that it didn't work, so everything is in one place).
Hopefully someone else will be able to pick it up while I'm away.
P.S. - If anyone tells you off for cross-posting point them to this post and I'll take the flack
|
|
|
|
|
Hi there,
I'm trying to create a property in vb like FolderBrowserDialog.SelectedPath wich is a string but it has a button to open the FolderBrowserDialog to select the path. please help me.
thanks.
|
|
|
|
|
- Properties don't have buttons. Forms have buttons.
- What kind of help do you need?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
I need to create a property just like the SelectedPath but for another control.
|
|
|
|
|
Why not just create a button that opens the FolderBrowserDialog when clicked?
|
|
|
|
|
Ok but how do I put that button in the PropertyGrid??
|
|
|
|
|
|
|
Hello !
When a condition is true I want to make all the controls inside a groupbox not usable by users but without disabling them.
This is the code I use :
Class NW
Inherits NativeWindow
Public Sub New(hwnd As IntPtr)
AssignHandle(hwnd)
End Sub
Const WM_NCHITTEST As Integer = &H84
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NCHITTEST Then
Return
End If
MyBase.WndProc(m)
End Sub
End Class
Dim nwss As List(Of NW) = Nothing
Public Sub block_area(flag As Boolean)
If flag = True AndAlso IsNothing(nwss) Then
nwss = New List(Of NW)()
For Each c As Control In GroupBox1.Controls
nwss.Add(New NW(c.Handle))
Next
Else
If flag = False And (Not IsNothing(nwss)) Then
For Each nw As Object In nwss
nw.ReleaseHandle()
Next
nwss = Nothing
End If
End If
End Sub
The problem is that this code works for all controls , except the TextBox and DateTimePicker. These 2 controls remain always clickable and editable.
What's wrong ?
Thank you !
|
|
|
|
|
Try enable and / or readonly
|
|
|
|
|
Sorry , but I have posted a code. I have some reasons to not use disable / readonly.
Can you give me a solution for my code ?
Thank you !
|
|
|
|
|
login codes with reset password option using sql server 2008
|
|
|
|
|
If you're looking for someone to just give you code or a finished project you've come to the wrong place.
If you've got specific questions about code you are writing, ask away, but we're not going to do your work for you.
|
|
|
|