Best way to create C# component (maintainable), with access to properties/events within the Designer

I would like to know what's the best way to develop a component that users will be able to place on their form within the Designer, and be able to define properties/events in the designer.  If anyone can give me some pointers, i would appreciate.  (Please, don't post me a 200 pages manuals from Microsoft web site).

I developped a component years ago, and i've upgraded from VS2010 to VS2017 Community and the upgrade really screwed up the project.  I get tons of "Invalid Resx File".  It's like the project upgrade went bad and it's unable to deserialize the component values (event if the components properties are visibles within the designer.  For example, this component has a grid and in the designer, we can see the grid columns collection and everything seems to be fine, but the compiler still doesn't like it.

I've read that it might be caused of the mimetype used for the serialization.  So i would like to know what would any developer would do to avoid this kind of problem.

Here's a sample of a grid column within the .resx file
  <data name="gridCustomers.Columns1" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
      AAEAAAD/////AQAAAAAAAAAMAgAAAFVpb21Db21wb25lbnRzU3VpdGUsIFZlcnNpb249MS4wLjAuMCwg
      Q3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj01ZTE4YzVhZTc4NDE0MTExBQEAAAAdaW9tQ29t
      cG9uZW50c1N1aXRlLkNvbHVtbkl0ZW0HAAAAFjxXaWR0aD5rX19CYWNraW5nRmllbGQdPERCQ29sdW1u
      TmFtZT5rX19CYWNraW5nRmllbGQfPEdyaWRDb2x1bW5OYW1lPmtfX0JhY2tpbmdGaWVsZApfQWxpZ25t
      ZW50GzxDb2x1bW5UeXBlPmtfX0JhY2tpbmdGaWVsZBg8VmlzaWJsZT5rX19CYWNraW5nRmllbGQiPEZp
      bHRlclBsYWNlaG9sZGVyPmtfX0JhY2tpbmdGaWVsZAABAQAEAAALCB5pb21Db21wb25lbnRzU3VpdGUu
      ZUNvbHVtblR5cGUCAAAAAQgCAAAAzcxMPgYDAAAABkN1c3RObwYEAAAAASMAAAAABfv///8eaW9tQ29t
      cG9uZW50c1N1aXRlLmVDb2x1bW5UeXBlAQAAAAd2YWx1ZV9fAAgCAAAAAAAAAAEAAAAACw==
    </value>
  </data>

Open in new window


I've seen that we can use XML serialisation.  In the article i've read, they say that it would be slower.   Slower is acceptable for me, but would it really solve the problem?  Would it also accept any changes made to this component?  Because with the actual method i've used, it's prolematic too.  Adding a column to the grid will lead to similar behavior and forcing me to remove the componennt and re-create it again.  

Thanks a lot for your help
LVL 10
Christian de BellefeuilleProgrammerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

vo1dCommented:
Are you talking of a winforms component?
If so, here is a link with only one page which will guide you through different scenarios:
https://msdn.microsoft.com/en-us/library/ms973818.aspx .
I would recommend to serialze as less as possible(no language specific information) into resx files and go with designer generated code.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Christian de BellefeuilleProgrammerAuthor Commented:
Thanks vo1d.  I've also found this link on S.O. which explain how to expose the columns of a DataGridView.

I don't even remember having the choice to serialize this way.  I'll check in the code why i ended up with this
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.