• 0

[VB.NET] How to reference object from Panel


Question

I have too panels in my program, one of them has a list on it, and I want to reference the list from the other panel. To be more specific, my list is printersList in panel goPanel, and I want panel goPanel to reference it. I get the the error: "Reference to a non-shared member requires an object reference." I've done a lot of research on this error, for about the past hour, but have not been able to make sense out of it, can anyone point me in the right direction?

Thanks

25 answers to this question

Recommended Posts

  • 0

Not sure how I could show it in a screenshot, but basically:

- I have 2 user control forms, startPanel and goPanel

- I have a check list box (printersList) on startPanel, that I want to reference on goPanel, so I can list the things checked in the check box.

- When I try to do startPanel.printersList.CheckedItems, it says "Reference to a non-shared member requires an object reference."

  • 0

I think you have to loop through the controls in the panel, finding one of the right type (cast it as the type of control you're looking for) and then reference it that way.

That or provide a public accessor in the form that returns the control.

  • 0

Winston, it is a user control that is reference by a panel, so the short answer would be that it's a user control.

John, how would I go about doing that? That is what MSDN has said, but I can't get it working.

This is what MSDN says for the error I am getting:

  Quote
You have referenced a non-shared member within your code and failed to supply an object reference. You cannot use the class name itself to qualify a member that is not shared. The instance must first be declared as an object variable and then referenced by the variable name.

Error ID: BC30469

To correct this error

Declare the instance as an object variable.

Reference the instance by the variable name.

I'm not sure how to do this, can someone describe generally how I would set this up?

  • 0

you have to declare the list as public or friend, if u just dragged and dropped it on the form is going to be declared private and not accessible by by any other object than the one that instanciated it. Thats why you get a bad reference. John proposed an even better idea (and the correct OO way) of providing a public property or method to access the control while still keeping the control private.

  • 0

yea, that's what MSDN said to do (John's way), not sure how to go about that though. The checkedlistbox's name is printersList in user control startPanel, so when I try Dim printersList2 As CheckedListBox, and set printersList2 = startPanel.printersList, that doesn't work. Am I going about this wrong?

Edited by JK1150
  • 0

ok scratch what I said up there, new objects are declared as friends. If these are all panels on the same form you should be able to loop through. Can you give a more specific example of that you are trying to do? do you want to show the same list twice? or are you using the values from printerslist to modify another list on the form? also is this winform or webform? aslo can you post a screenie of what you are trying to do (just disable the reference line of code). Visuals help demonstrate your desired behavior

  • 0

i'm not sure what i could take a screenshot of, but I have a mainFrame (Windows App) with a panel in it. The program starts by loading a user control into the Panel, which includes printersList, a list of printers on a network that can be installed. The user will click start, which will change the panel to the user control goPanel with a progress bar, cancel button, etc., which will use what was checked on the checked list in startPanel to install the selected printers. This is a winform. Is there a specific part of this you want to see?

  • 0

It sounds to me like you need to have your user control expose the checked list box as a public property. That way other user controls have access to it.

In your code for your goPanel control, you'd have something like this (this is C#, hopefully you can translate it if you need to)

class MyGoPanelControl : UserControl

{

// Next line probably added by your designer automatically

private CheckedListBox printersList;

public CheckedListBox PrintersList

{

get { return printersList; }

}

}

then, anything that can access an instance of MyGoPanelControl, can access the printersList control inside of it via the property.

Is that what you were looking for?

  • 0

I would be very surprised if you could not returna checkedlistbox in visual basic .net. Its just a class like anything else. It just happens to also have a visual representation.

I ran my code through a converter to get it to VB.NET:

Class MyGoPanelControl

Inherits UserControl

' Next line probably added by your designer automatically

Private printersList As CheckedListBox

Public ReadOnly Property PrintersList() As CheckedListBox

Get

Return printersList

End Get

End Property

End Class

  • 0

Ok, i added a new user control, added a panel into the user control, dropped a checkedlistbox into the panel.

Now i added the new user control to my form, and added a button which adds new items to the checkedlistbox.

Check out the attachment to see if that's what you're after.

  • 0

If you put that button on another user control rather than in the main frame, that is basically what I need to know how to do.

(I have the users select printers from a list, click go, and then a progress screen will come up where the "goPanel" class will need to know which printers the user selected in the "startPanel" class)

Thanks for all your help so far, VB.NET certainly is an interesting learning experience.

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

    • No registered users viewing this page.
  • Posts

    • Here's why it makes sense to name it iOS 26 and why it doesn't by Aditya Tiwari It has been almost 18 years since Apple launched the first version of its popular mobile operating system alongside the original iPhone. Recent reports and rumors circulating on the web suggest that the company is all set to unveil a major overhaul for iOS 19 at this year's WWDC keynote. There is something that baffled many when they found that the Cupertino giant is reportedly planning to rename iOS 19 to iOS 26. Yes, a company like Apple skipping eight versions for iOS is enough to leave users with a "why?" expression on their face. However, even if Apple pulls it off, there are two sides to the coin. Why it makes sense to call it iOS 26 There are several reasons why calling it iOS 26 instead of iOS 19 isn't as weird as it sounds. To begin with, it's something that has been done in the past. Samsung is a well-known example when we think about renaming device lineups and skipping version numbers. Samsung launched the Galaxy S20 series in 2020. But what was its predecessor? Galaxy S19? No, it was the Galaxy S10. The South Korean giant renamed its device lineup and aligned it with the year of launch, jumping ten versions in the process. So, someone viewing a Galaxy S23 can easily determine that the device was launched in 2023. It also gives them a feeling that they are using the 'latest and greatest' product. On the flip side, a device from the previous year may feel outdated, potentially motivating them to upgrade. Skipping version numbers isn't fun and games for everyone. Microsoft became the butt of jokes when it skipped Windows 9 and announced that Windows 8.1 will be upgraded to Windows 10 (that too in 2015). Windows 10 was thought to be "the last version of Windows", but things turned out differently. Apple's case would be a bit different, where the iOS version number is one year ahead. So, iOS 26 will release in 2025, iOS 27 in 2026, and so on. This approach is similar to how game companies like Electronic Arts name their gaming titles. Although it may seem off track, the naming scheme aligns with Apple's development schedule. The company typically announces new iOS versions at WWDC in June and rolls them out to the public in the fall season. After that, it continues to push incremental updates through the following year. In other words, a particular iOS version lives on your iPhone for a quarter of the launch year and about nine to ten months in the following year. Meanwhile, Samsung releases new Galaxy S devices at the start of the year, so it makes more sense to align their name with the current year. Not just iOS 26, reports said that Apple will streamline its confusing software naming system by renaming almost all of its operating systems to a single version. So, there will be iPadOS 26, macOS 26, tvOS 26, and watchOS 26 instead of iPadOS 19, macOS 16, tvOS 12, and so on. While the big move will make things easier for users, it will also highlight the work Apple has been doing to unify its software experience across devices. iOS and iPadOS have been related to each other from the beginning, but macOS gained ARM support in 2020 and began incorporating iOS-like UI elements. Apple has already developed a suite of Continuity features that enable different Apple devices to work together. macOS 14 Sonoma further bridged the gap between iPhone and Mac in 2023 with a revamped widgets picker UI, which allows access to and syncing with widgets stored on your iPhone. New widgets introduced in macOS 14 are interactive, similar to those on iPhone. They let you do stuff like checking off reminders, playing or pausing media, accessing smart home controls, and more. Apple's iOS 26/iOS 19 would be the second major naming shake-up in the history of iOS. The first one was when Apple renamed the operating system from iPhone OS to iOS in June 2010. iOS 26 is expected to be the biggest update in years, reportedly featuring a 'dramatic' glass-like UI overhaul, a revamped Camera app, live translation for AirPods, a new gaming app, and a new set of accessibility features. The glass-like design, first introduced on Apple's Vision Pro headset, is expected to make its way to tvOS and watchOS. Why doesn't it make sense to call it iOS 26 It already feels a bit awkward when you realize that the iPhone 16 runs iOS 18, for whatever reason, when the first iterations of both iPhone and iOS arrived in the same year. Adding eight more digits to the iOS version number will make it sound even weirder. The 19th generation of iPhone's operating system will be called iOS 26. Imagine buying an iPhone 17 later this year, and it runs iOS 26 out of the box. However, there are a couple of things Apple can do to tone down the awkwardness. Perhaps Apple can rename the iPhone series and start calling it iPhone 26 to match its software counterpart. A far-fetched and even more unlikely option is to drop version numbers from the iPhone's name entirely. Apple is already doing it for its tablets (iPad, iPad Pro, and iPad Air) and its Mac computers. Therefore, it won't be an issue once the users absorb the initial shock of the announcement. But we can't ignore that not having a version number tied to a product has its downsides. These are all speculations anyway. Whatever happens, Apple fans will get over it and learn to live with it, like they are living with the hopes of an upgraded Siri and AirPower to charge their Apple devices together.
    • I'd prefer the disclaimer being more transparent by putting it above the article.
    • dBpoweramp Music Converter 2025-06-05 by Razvan Serea Audio conversion perfected, effortlessly convert between formats. dBpoweramp contains a multitude of audio tools in one: CD Ripper, Music Converter, Batch Converter, ID Tag Editor and Windows audio shell enhancements. Preloaded with essential codecs (mp3, wave, FLAC, m4a, Apple Lossless, AIFF), additional codecs can be installed from [Codec Central], as well as Utility Codecs which perform actions on audio files. After 21 days the trial will end, reverting to dBpoweramp Free edition (learn the difference between Reference and dBpoweramp Free, here). dBpoweramp is compatible with Windows 10, 8, 7, Vista, both 32 and 64 bit. dBpoweramp Music Converter features: Convert audio files with elegant simplicity. mp3, mp4, m4a (iTunes / iPod), Windows Media Audio (WMA), Ogg Vorbis, AAC, Monkeys Audio, FLAC, Apple Lossless (ALAC) to name a few! Multi CPU Encoding Support Rip digitally record audio CDs (with CD Ripper) Batch Convert large numbers of files with 1 click Windows Integration popup info tips, audio properties, columns, edit ID-Tags DSP Effects such as Volume Normalize, or Graphic EQ [Power Pack Option] Command Line Encoding: invoke the encoder from the command line DSP Effects - process the audio with Volume Normalize, or Sample / Bit Rate Conversion, with over 30 effects dBpoweramp is a fully featured mp3 Converter dBpoweramp integrates into Windows Explorer, an mp3 converter that is as simple as right clicking on the source file >> Convert To. Popup info tips, Edit ID-Tags are all provided. dBpoweramp Music Converter 2025.06.05 changelog: Darkmode added Core Converter Debug log dumps ID Tags written VST Effect Folders dialog fixed missing InitCommonControls would not show correctly FLAC/Ogg/Opus/etc - allows editing of CDTOC ID Tag CD Ripper secure ripping log where shows TOC was not showing CD Extra correctly CD Ripper was incorrectly setting data track length on main display (for certain drives) CD Ripper internally better handling of corrupt TOCs CD TOC to Tag was incorrectly adding 150 to CD Extra disc CD Ripper shows "AccurateRip Unconfigured" in rip status rather than "not in accuraterip" if unconfigured CD Ripper art paste accepts https CueSheet added as standard - log file written to same folder as cue and folder.jpg AIFF internal code merge (macos >> windows) Download: dBpoweramp Music Converter R2025.06.05 | 82.2 MB (Shareware) View: dBpowerAMP Music Converter Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Staged. It's a requirement that vehicles are strapped down to the bed. Usually wheel and/or chassis tie downs are used. That appears to just be on the winch.
  • Recent Achievements

    • Week One Done
      abortretryfail earned a badge
      Week One Done
    • First Post
      Mr bot earned a badge
      First Post
    • First Post
      Bkl211 earned a badge
      First Post
    • One Year In
      Mido gaber earned a badge
      One Year In
    • One Year In
      Vladimir Migunov earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      495
    2. 2
      snowy owl
      255
    3. 3
      +FloatingFatMan
      252
    4. 4
      ATLien_0
      227
    5. 5
      +Edouard
      191
  • Tell a friend

    Love Neowin? Tell a friend!