• 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

    • Dead By Daylight and three more games join Xbox Free Play Days this weekend by Pulasthi Ariyasinghe As the weekend approaches, Microsoft has brought along another Free Play Days promotion for Game Pass subscribers to jump into. This time, Dead by Daylight, Headbangers: Rhythm Royale, Trailmakers, and Synduality Echo of Ada are all available for Xbox Game Pass Ultimate, Standard, and Core members for no extra cost. As always, any progress made during the weekend also carries over automatically if you decide to purchase a game afterward. From the four games available, Dead by Daylight should be the most familiar to most gamers. The multiplayer four-versus-one asymmetric survival horror game has you assuming the roles of survivors or the killer to see who can come out on top. Next, Headbangers: Rhythm Royale lands as a light-hearted, rhythm-based battle royale game. Up to 30 players can be in a single round, all represented as pigeons, before various mini-games involving increasingly difficult rhythm challenges get thrown at the group. The last remaining pigeon becomes the "Master Headbanger." Meanwhile, Trailmakers is a popular sandbox experience where you and your friends construct physics-based vehicles. A wide range of modular parts are offered for making these vehicles, with an exploration element also adding more options to search for. Adventure, sandbox, and racing modes arrive as options for playing either solo or in multiplayer. Lastly, the Synduality Echo of Ada is a sci-fi extraction shooter experience where you control mechs as you search for loot while fighting AI and other players. Here are the store links for the announced titles and their supported platforms: Dead by Daylight - $11.99 (Xbox Series X|S, Xbox One) Headbangers: Rhythm Royale - $3.99 (Xbox Series X|S, Xbox One, PC) Trailmakers - $14.99 (Xbox Series X|S, Xbox One, PC) SYNDUALITY Echo of Ada - $29.99 (Xbox Series X|S) This Free Play Days promotion will end on Sunday, June 22, at 11:59 pm PT. Following this, expect another round of games to enter the program next Thursday, June 26.
    • I'm not simping, I'm telling it how it is. This is the norm and has been forever. Profits need to keep growing, it doesn't matter if you are valued at a trillion or a million. As long as you are part of public trading that's the name of the game. If it's cheaper for the company to outsource, they will, and you'll get laid off. Welcome to capitalism 101. Like I said, the problem is the system itself.
    • Samsung may offer Galaxy AI free for life on the Galaxy Z Fold7, Z Flip7, and Z Flip7 FE by Sagar Naresh Bhavsar Samsung is all set to unveil its latest foldables: the Galaxy Z Fold7, Z Flip7, the affordable Z Flip7 FE, along with the Galaxy Watch8 series at the Unpacked event, possibly in New York City. The Galaxy Z Fold7 is expected to be the thinnest book-style foldable from the company, while the Galaxy Z Flip7 is tipped to come with a full-screen cover display. These devices are almost confirmed to launch with Android 16-based One UI 8 out of the box, the beta of which is already live for the Galaxy S25 series. Samsung is also expected to give a glimpse of its first XR headset, the Galaxy XR, dubbed "Project Moohan," at the event. However, there may be something more exciting coming for upcoming foldable fans. A reliable leaker, PandaFlashPro on X, has tipped that you might get all Galaxy AI features for free for life with the upcoming Galaxy Z Flip7 and Galaxy Z Fold7. Notably, Galaxy AI will also reportedly be permanently free on the affordable Galaxy Z Flip7 FE. The leaker also claimed that the Galaxy Z Fold7, Z Flip7, and Z Flip7 FE will also come with Gemini Advanced plus 2TB of cloud storage, free for six months. This is similar to theoffer that Samsung offered the Galaxy S25 series earlier this year. However, the company cleared the air that the Galaxy AI features on the Galaxy S25 series will be free till the end of 2025, after which a subscription-based model will be introduced. If true, then you will be able to enjoy Galaxy AI features such as Sketch to Image, Generative Image, Note Assist, Live Translate, Interpreter, Chat Assist, etc., free for a lifetime on the upcoming foldables, setting it apart from its competitors.
    • Summary for all: Some WD SSDs need firmware updates for 24H2.
    • Next-gen AMD GPUs reported to support HDMI 2.2 with up to 80Gbit/s bandwidth by Aditya Tiwari Some beans have spilled around AMD's rumored upgrades for its next-generation graphics architecture. The American silicon giant is expected to support up to 80 Gbps mode on HDMI 2.2 for its upcoming graphics architecture, internally codenamed GFX13, and expected to launch as RDNA 5 or UDNA. The latest information comes from the leaker @Kepler_L2, who took to their social media account on X (via VideoCardz). It strengthens the hopes of the latest HDMI standard and support for faster bandwidth making their way to the next generation of AMD GPUs. The HDMI 2.2 standard was announced earlier this year and released to manufacturers in the first half of 2025. It pushes the maximum allowed bit rate to 96 Gbps and supports Latency Indication Protocol (LIP) to improve audio and video synchronization. However, according to Kepler's post, RDNA 5 GPUs are expected to support only 64 Gbps and 80 Gbps modes. This suggests that the 96 Gbps mode may not be supported on the new architecture, while it remains unclear whether this is due to some hardware limitation or will be added later. Although the new piece of information pertains to GFX13, it doesn't clarify whether it's related to the PRO or Radeon RX series. The company has previously used UHBR 13.5 (54 Gbps) for its consumer-focused GPUs to reduce costs while supporting UHBR 20 (80 Gbps) on PRO cards, according to the leaker. It remains to be seen whether AMD treats the two product lines the same or differently. Another standard announced earlier this year was DisplayPort 2.1b, which keeps the same maximum bandwidth of 80 Gbps but supports three times the cable length for UHBR20 GPU-to-display connections compared to existing VESA-certified DP80 passive cables. The new standard is supported on NVIDIA's RTX 50 and RTX PRO Blackwell series GPUs. For now, there is no update on whether AMD will bring DisplayPort 2.1b support to the GFX13 architecture.
  • Recent Achievements

    • First Post
      MikeK13 earned a badge
      First Post
    • One Month Later
      OHI Accounting earned a badge
      One Month Later
    • Week One Done
      OHI Accounting earned a badge
      Week One Done
    • First Post
      Thornskade earned a badge
      First Post
    • Week One Done
      Higante88 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      709
    2. 2
      ATLien_0
      269
    3. 3
      Michael Scrip
      202
    4. 4
      +FloatingFatMan
      178
    5. 5
      Steven P.
      128
  • Tell a friend

    Love Neowin? Tell a friend!