# Visual Basic > Slow Chat with the Microsoft Visual Basic team >  How does it work?  Why does it work this way?

## PaulYuk_MS

Hi!

I'm excited that we have a broad showing from the VB team, from feature designers, to implementers, to testers.  This is a good group to ask deeper how and why questions.  

So here are some questions to think about - maybe you want to respond:

- Are you curious how a particular VB '05 or '08 feature works?

- Are you curious why a particular design decision was made?

- Do you have feedback about the behavior or decision?

Best,
Paul

----------


## wossname

1. Why is the ColorMatrix so woefully badly documented?

2. How come you guys didn't write an overload for Graphics.DrawImage() that lets you specify four PointFs?  Three is fine if you want a parallelogram but what about irregular quads?  Do you plan to allow irregular quads in the future?  Also perspective correction would be nice.

3. I want the moon on a stick please.  :Big Grin:

----------


## timeshifter

In answer to number 2, I've had the same problem myself... couldn't come up with a decently fast way to do it with VB at all, so I ended up rewriting the whole function from scratch in C#. An image, and four corner points. Did I waste my time?

----------


## Merrion

Is there any setting (e.g. 

```
Option Even Stricter
```

) that prevents passing an integer through a parameter that expects an enum?  

Or - what do you recommend instead?

----------


## Atheist

> Is there any setting (e.g. 
> 
> ```
> Option Even Stricter
> ```
> 
> ) that prevents passing an integer through a parameter that expects an enum?  
> 
> Or - what do you recommend instead?


But arent enums just fancy names for integers?

----------


## Phill64

> But arent enums just fancy names for integers?


Yes, Integers, Longs or Bytes can be an enum.
The enum name itself is just an alias to a value of any of those types.

Being able to put a direct value in makes sense.
And why wouldn't you want to do so? especially in circumstances when you're reading settings or the like.

----------


## Merrion

No - enums should allow for a greater deal of type safety than integers.

If you have an enum


```
Public Enum VehicleDrivenWheels
    TwoWheelDrive = 2
    FourWheelDrive = 4
End Enum
```

you should not be able to say:


```
Dim MyCarDrivenWheels As VehicleDrivenWheels = 739
```

It is this way because when you combine enums (that are set as <flags()> ) together and this would technically allow any integer - but I'd like some way of saying : treat this enum as not combineable...even as a specific attribute you have to set to make it so...

----------


## Paul M

Why did your team decide to allow the Intellisense to be resized? It already appears to be placed pretty well.

----------


## timeshifter

That's where I can argue.. the sizing of it is great, the tooltips are great... but whenever I need to reference existing code as I'm using Intellisense, it ALWAYS displays directly over what I need to see. Pain in the rear. But aside from that ever so slight drawback (mild sarcasm included...), Intellisense is a good size for me. I don't mind scrolling... in my opinion, it's better than having half the screen covered by methods and parameters.

----------


## TTn

> but whenever I need to reference existing code as I'm using Intellisense, it ALWAYS displays directly over what I need to see. Pain in the rear.


I feel the same way, but it must be tough to satisfy both needs.

----------


## TTn

> - Are you curious how a particular VB '05 or '08 feature works?
> - Are you curious why a particular design decision was made?
> - Do you have feedback about the behavior or decision?


When 2005 first came out, the default Timer was switched to the System.Windows.Forms.Timer, which has a Tick event.
You now have to choose the toolbox items, and add the System.Timers, to get an Elapsed event like in 2003.
I thought that this might be a mistake, but I'm giving it the benifit of doubt.

*Was there a reason for this particular desicion?*


While on the subject of ToolBoxes, and their ambiguous icons.
Once again I've experienced the toolbox bug of 2005 where the icons go blank.
This is annoying and makes it hard to quickly located the control i want.
I just unistalled the .NET 2.0 framework, and then reinstalled it.
Now my toolbox shows the correct picture icons.

*
Is there an easier fix for version 2005?
Does version 2008 fix this bug for good?
*

_

----------


## techgnome

Yes, there is an easier solution.... reset your tool box.... 
Right-click anywhere in the Toolbox and select "Reset Toolbox" .... you'll lose any custom groups you may have created, but it will reset the toolbox... a lot less painful than an uninstall/install.

-tg

----------


## TTn

Thanks techgnome.
It looks like other people were able to WorkAround the problem by resetting the toolbox too.  I'll see what happens next time.
This does'nt cure things if you've done a fair amount of customizing(i dont really), because you have to maintain it about once a month.
This is approximately the frequency which it happens to me anyway.

I really hope that 2008 fixes this for good, since the service pack for 2005 did not, and the team knew about it then.

----------


## michaelrawi

In VS2005, when creating a component or user control, I can't test my toolbox image unless I compile and add it reference outside the project. Is this fixed in 2008? Also, it need some trick to get the icon works in the toolbox (you have to place it on the root folder). IMO, it's better that all resource can be managed in a folder rather than place them all in the root folder.

----------


## wossname

Hmm, do the MS guys have the day off or something?

----------


## Merrion

I'm guessing they aren't up yet - probably working on a EST timezone based work day :-)

----------


## brad jones

> I'm guessing they aren't up yet - probably working on a EST timezone based work day :-)



They are on Pacific time (Redmond, Washington), so they won't likely be on until later (it is 6:00am in Redmond now....) . Additionally, the Microsoft team also has to do their 'day job', so they won't be on as constantly as some of you  :Wink:   :Big Grin: .  

They have to sleep  :Wink: 

Brad!

----------


## Phill64

TTn, in regards to the timers, as far as I can tell, the Timers.Timer uses a new thread, where as the Forms one does not (when i tried both to perform Me.Hide() the Timers errors requiring Invoke, where as the Forms one doesn't)

But it would be nice for MS to confirm/disprove this.

----------


## TTn

> TTn, in regards to the timers, as far as I can tell, the Timers.Timer uses a new thread, where as the Forms one does not (when i tried both to perform Me.Hide() the Timers errors requiring Invoke, where as the Forms one doesn't)
> But it would be nice for MS to confirm/disprove this.


Okay were you debugging it?
The debugger falsely will cause errors like this sometimes, especially when refering to Me..  Don't use the debugger to test things.
I actually tested it in both ways with the debugger and without, and the elapsed event worked, but the tick did not.
This seems to opposite of what you are saying.

----------


## Shaggy Hiker

I'm curious about why structures and classes are implemented the way they are. Actually, I'm not curious at all about why classes are the way they are, I'm curious about why structures are not.

Mostly:
1) Why is it not allowed to add a constructor that takes no arguments, especially since the behavior of the constructor is not otherwise mandated?

2) Why is a structure automatically a Value type. Since structures can contain reference types as well as value types, making a structure doesn't necessarily say anything about how it will behave if it is copied, or passed to a function. Classes and structures can be used interchangeably in effect, so what is the reason behind the difference?

----------


## PaulYuk_MS

Sorry - folks on working on the editor sides of thing were slammed today.  I'm roping them in  :Smilie:   C'mon, we're allowed to be a little slow on a slow chat, right?

----------


## TTn

> Sorry - folks on working on the editor sides of thing were slammed today.  I'm roping them in   C'mon, we're allowed to be a little slow on a slow chat, right?


We'll let it slide this time, but otherwise it's gonna go down on your permanent record{echos..}. lol :Smilie:

----------

