-
May 11th, 2016, 03:53 PM
#1
Thread Starter
New Member
VS 2013 Windows Form datagridview problems with .NET 4.6.1
I've a Windows Form VS 2013 application that is configured to require at a minimum .NET Framework 4.0. This application is distributed to several different pharma customers.
I have .NET 4.5.2 installed on my development machine. All users have a mix of .NET 4.0 to .NET 4.5.2. I've never had a problem with the application.
A customer just started to have problems. I noticed that their IT dept pushed down .NET 4.6.1 to all client machines. I've identified that, in a .NET 4.6.1 environment, when the datagridview.columns(x).minimumwidth property is set in code, the following error is trapped: "Object reference not set to an instance of an object." Which is goofy because several datagridview properties are set in previous lines in the code.
Even more goofy is that this happens with only two out of ~50 datagridview objects - all the other "datagridview.columns(x).minimumwidth = xx" lines of code do not result in error.
Notes;
1. I've tried deleting the two datagridviews and recreating them, but no luck.
I've found sporadic compatibility complaints about .NET 4.6.1, but haven't found anything specific about 4.6.1 and datagridviews. I've found this general post by Microsoft describing .NET 4.6.1: https://msdn.microsoft.com/en-us/lib...0%29.aspx#v461 This post has something about 4.5.2 and 4.6.1 and a new 'EnableWindowsFormsHighDpiAutoResizing' element, but it's an opt-in feature and shouldn't affect datagridviews as they reside in my application: "...This is an opt-in feature. To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file...."
I actually tried enabling EnableWindowsFormsHighDpiAutoResizing, but it had no effect - the error still occurred in a 4.6.1 environment.
If anyone has any insight to this issue, that would be great. Thanx!
-
May 11th, 2016, 05:21 PM
#2
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Did you stop the execution of the program at that point and see which object is the offending one?
More important than the will to succeed, is the will to prepare for success.
Please rate the posts, your comments are the fuel to keep helping people
-
May 12th, 2016, 04:29 AM
#3
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hi kaliman,
Yes, I did. From the original post: "...Even more goofy is that this happens with only two out of ~50 datagridview objects ..." So I know exactly which two datagridviews are causing the problems and I've added appropriate try-catch statements when the code attempts to set the "datagridview.columns(x).minimumwidth = xx" property. However, I have no idea why these minimumwidth statements are causing the error "Object reference not set to an instance of an object."
-
May 12th, 2016, 05:00 AM
#4
Fanatic Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
when you step through the code check each object of your code and drill down further into the problem
example, at the problem parts
i recommend using watches since you can see everything right away........
add watch for the following
1) datagridview.columns(x).minimumwidth ......does this give a value or object ref error
2) datagridview.columns(x) ......does this give an outofbounds or index type of error, its a collection/array
3) datagridview.columns ......same as above....if OK, check its items, item count compare your x variable etc
4) datagridview ......if this gives an abject ref error, or is nothing then houston we have a problem
this is going to at least quickly tell you exactly where the problem is.......... it may not be with the .MinimumWidth part as you believe.
Yes!!!
Working from home is so much better than working in an office...
Nothing can beat the combined stress of getting your work done on time whilst
1. one toddler keeps pressing your AVR's power button
2. one baby keeps crying for milk
3. one child keeps running in and out of the house screaming and shouting
4. one wife keeps nagging you to stop playing on the pc and do some real work.. house chores
5. working at 1 O'clock in the morning because nobody is awake at that time
6. being grossly underpaid for all your hard work
-
May 12th, 2016, 07:31 AM
#5
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hi GBeats,
I've already done something similar in the code. I embedded each of the following lines in try-catch statements. The only line that throws an error is the line described in underlined bold italics:
dim dgv as datagridview = me.dgvSamples
int1 = dgv.Columns.Count ' This returns int1 = 2. So there are two columns in the datagridview
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders
dgv.DefaultCellStyle.WrapMode = DataGridViewTriState.True
For Count2 = 0 To int1 - 1
dgv.Columns.Item(Count2).SortMode = DataGridViewColumnSortMode.NotSortable 'This sets a property for both columns without error, so dgv.Columns.Item(1) is OK
Next
dgv.Columns.Item(0).ReadOnly = True 'No problem here
dgv.AllowUserToResizeColumns = True
dgv.AllowUserToResizeRows = True
dgv.RowHeadersWidth = 25
If int1 < 1 Then
Else
dgv.Columns.Item(1).MinimumWidth = 150 'This code throws the error "Object reference not set to an instance of an object."
End If
dgv.Columns(0).Width = 150 'No problem here
dgv.AutoResizeColumns()
dgv.AutoResizeRows()
-
May 12th, 2016, 08:19 AM
#6
Fanatic Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
dgv.Columns.Item(1).MinimumWidth = 150
what is this value when the breakpoint is on this line
i read that column.width overrides column.minimumwidth could there be a problem with this.... maybe try setting the width to 151 before settings minimum width to 150?? maybe a bug..
Last edited by GBeats; May 12th, 2016 at 08:26 AM.
Yes!!!
Working from home is so much better than working in an office...
Nothing can beat the combined stress of getting your work done on time whilst
1. one toddler keeps pressing your AVR's power button
2. one baby keeps crying for milk
3. one child keeps running in and out of the house screaming and shouting
4. one wife keeps nagging you to stop playing on the pc and do some real work.. house chores
5. working at 1 O'clock in the morning because nobody is awake at that time
6. being grossly underpaid for all your hard work
-
May 12th, 2016, 08:41 AM
#7
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hi GBeats,
Remember, none of these errors happen on my development machine (.NET 4.5.2). I trapped these errors on the customer's machine (.NET 4.6.1) with the code that has the multiple try-catch statements.
On my machine, the value returned is 5, which I believe is the default setting for a datagridview column(x).minimumwidth. On the customer's machine, I would not be able to trap/return this value because the
dgv.columns.item(1).MinimumWidth property itself returns the error "Object reference not set to an instance of an object." To clarify, '...Object...' in this case isn't the datagridview object, '...Object..." is the dgv.columns.item(1).MinimumWidth property.
I'm in the process of setting up a VMware development machine that I'll configure with .NET 4.6.1 and I'll be able to investigate better.
-
May 12th, 2016, 08:51 AM
#8
Fanatic Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
im just throwing ideas up here , i was suggesting setting a width may somehow cause a problem later when setting a minimum width....... its obviously a bug somewhere (or something thats been overlooked on our/your part) so you need to start thinking out of the box, you wont find a bug by being logical (in a certain sense )
if it was me i would try changing my code slightly.... instead of using object.columns.item(#), use object.columns(#)... visa versa, you never know
Yes!!!
Working from home is so much better than working in an office...
Nothing can beat the combined stress of getting your work done on time whilst
1. one toddler keeps pressing your AVR's power button
2. one baby keeps crying for milk
3. one child keeps running in and out of the house screaming and shouting
4. one wife keeps nagging you to stop playing on the pc and do some real work.. house chores
5. working at 1 O'clock in the morning because nobody is awake at that time
6. being grossly underpaid for all your hard work
-
May 12th, 2016, 09:02 AM
#9
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hi GBeats,
I haven't physically set the columnwidth anywhere, so no conflict there. I can't test with the customer anymore because he was getting annoyed with all the testing I had to do on his machine. I'm creating a VMware dev .NET 4.6.1 environment, so should be able to find out more.
I don't think it's a bug because the error never happened in the past with this application ranging from .NET 3.5 to .NET 4.5.2. The error only happens with .NET 4.6.1. I suspect Microsoft is the culprit - I've found a few other posts on other forums of people reporting backwards compatibility issues with .NET 4.6.1.
I appreciate your input.
-
May 12th, 2016, 09:29 AM
#10
Fanatic Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
new technology bring new problems........... i dont think that way but its always in the back of my mind, your only solution is wait until a fix is presented or find some weird workaround that kind of fixes the problem....... i never had this problem with .NET personally but i had it countless times developing on office and sometimes it just doesnt make sense and its a pain.....
i personally suggest you get rid of the offending line of code and find some (probably rediculus) workaround just so your already annoyed client doesnt loose all faith , i have definitely been there before haha.
i might goto the columnresize events and hardcode my own minimum size in there, along with any initial grid formatting code you have......
Yes!!!
Working from home is so much better than working in an office...
Nothing can beat the combined stress of getting your work done on time whilst
1. one toddler keeps pressing your AVR's power button
2. one baby keeps crying for milk
3. one child keeps running in and out of the house screaming and shouting
4. one wife keeps nagging you to stop playing on the pc and do some real work.. house chores
5. working at 1 O'clock in the morning because nobody is awake at that time
6. being grossly underpaid for all your hard work
-
May 12th, 2016, 09:46 AM
#11
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hello again. in your code
Code:
If int1 < 1 Then
Else
dgv.Columns.Item(1).MinimumWidth = 150 'This code throws the error "Object reference not set to an instance of an object."
End If
I will not get into the empty IF - THEN but the issue is that there is no warranty that if Int1 is not < 1, there is a Columns.Item(1). Because Int1 could be 1, this means the columns array has only one element being Columns.Item(0). Check the value of Int1 when you get the exception at this point, I bet is "1"
More important than the will to succeed, is the will to prepare for success.
Please rate the posts, your comments are the fuel to keep helping people
-
May 12th, 2016, 09:59 AM
#12
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Hi Kaliman,
From the original post:
.
.
int1 = dgv.Columns.Count ' This returns int1 = 2. So there are two columns in the datagridview
.
.
-
May 12th, 2016, 10:02 AM
#13
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
And actually the If statement is incorrect. It should read:
If int1 < 2 Then....
The 'empty' part is by design. If int1 < 2, then I don't want to do anything.
-
May 12th, 2016, 10:03 AM
#14
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
And I have checked the value of int1 just before this If-Then statement; int1 = 2
-
May 12th, 2016, 10:14 AM
#15
Thread Starter
New Member
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Also, when the error is trapped and the code continues to the GUI, the offending datagridview has two columns as expected.
-
May 12th, 2016, 10:18 AM
#16
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
Originally Posted by gubbs
And actually the If statement is incorrect. It should read:
If int1 < 2 Then....
The 'empty' part is by design. If int1 < 2, then I don't want to do anything.
The it should be
IF int1 >= 2 THEN
and not leave part of the statement empty. But this is just aesthetics, it does not fix your problem
More important than the will to succeed, is the will to prepare for success.
Please rate the posts, your comments are the fuel to keep helping people
-
May 12th, 2016, 10:19 AM
#17
Re: VS 2013 Windows Form datagridview problems with .NET 4.6.1
I would suggest to put Column(1) itself in the watch window and explore all its properties to see if you find something odd.
More important than the will to succeed, is the will to prepare for success.
Please rate the posts, your comments are the fuel to keep helping people
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|