• 0

[C#] Waiting for a Click event


Question

Hi folks, any help is appreciated

I'm in C#/.NET here for the first time and I'm trying to force my program to wait for a button's click (okbutton event Click). I don't want the program going anywhere until the user clicks that OK button.

I can't find any method, and since the event returns a void, I have no way of tracking a bool value...aiee!

Oh, and I don't want to use a MessageBox, please :)

Thanks in advance!

Link to comment
https://www.neowin.net/forum/topic/444311-c-waiting-for-a-click-event/
Share on other sites

9 answers to this question

Recommended Posts

  • 0

I have no idea what you're doing...(This is based on the fact that you mentioned a MessageBox...)

But....

If this form is being spawned by something else, and you want it to appear, and then wait to close, you can call it via ShowDialog(), which will show it, and then wait until the form closes.

  • 0

Thanks for the help folks.

This is actually my main form (just to clarify). I've went ahead and set the class level bool to true on my event, one problem I'm still having is that I cannot truly wait for the event to happen (I'm getting into threads here). My CPU clock cycles are going through the roof because I'm just using a while(bool == false) loop to wait.

I know why it's not working now, but I have no idea how to correct this and make the program truly wait on an event...

Anymore suggestions for me? Thanks again!

  • 0

you can use delegation to fire simultanesou events, maybe put the thread to sleep and have the delegate fire it again, here is a quick example of someones implementation of handling events with multiple threads, http://www.codeproject.com/csharp/h5csthreading.asp this may send you in the right direction. if you dont want to post your real code can u post something similar (a test app) the mimicks what you are trying to do so we can analyze it? hope this helps!!

  • 0

This is my code. I'm having a look through that page. It does look like I need to do multi threads here (ack).

Right here, where my MessageBox.Show call is, I'd like to replace it by waiting on the okbutton_Click event (or something of that could replace the MessageBox.Show command). I have a class level boolean called okclicker. It would be set to false until we get to this point in the code. I would then set it to true and allow the user to continue to find the next string.

///////code

while(firststrindex != -1)

{

havefound = false;

firststrindex = finallist.IndexOf(",");

if(firststrindex != -1)

{

firststr = finallist.Substring(0,firststrindex);

MessageBox.Show (firststr, "Finding String", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);

allstr += firststr;

allstr += ", ";

//here I have a great deal of function calls and if statements to handle finding my string firststr in a char array

firststr = "";

finallist = finallist.Substring(firststrindex+2);

}

and just for reference, I had this code when my clock cycle's pinned...

///////code

while(firststrindex != -1)

{

okclicker = false;

havefound = false;

firststrindex = finallist.IndexOf(",");

if(firststrindex != -1)

{

firststr = finallist.Substring(0,firststrindex);

//here is my wait

while(!okclicker){}

allstr += firststr;

allstr += ", ";

//here I have a great deal of function calls and if statements to handle finding my string firststr in a char array

firststr = "";

finallist = finallist.Substring(firststrindex+2);

}

I had an okbutton_Click event that set okclicker to true;

Thanks again! I'm having a read through this link you gave me. All the help is greatly appreciated.

  • 0

From a simple test on my end, the MessageBox.Show() call will pause program execution.

Probably what you want is to check the return value of your MessageBox.Show() call (it returns a DialogResult enum -- in your case DialogResult.OK or DialogResult.Cancel). If the user clicks cancel, bust out of your loop (either set a "processing" bool before you enter the loop, and set it == false when the user clicks cancel (and check it in your while condition), or use "break" to break out of the while loop).

If they click ok, then ignore the result (since you're going to fall through to your processing code). This is assuming you want this message box as a check that you want to keep on processing.

Kormac

  • 0

It's the MessageBox that I want to remove, I'd like to integrate it into my main form.

MessageBox does stop the program. I'm aware of that, but I want a button on my main form that acts as this MessageBox does (without the extra popup window, as I'm finding that very annoying to my user).

IE. Button4.Click allows the user to continue. Button4 is found on the main form, not as part of the MessageBox. I will be removing the MessageBox when I can.

Again, thanks...boy, lots of help from lots of smart folks here.

Oh, and Kormac, I am assuming the user will be hitting ok, the cancel button actually will not break out of my loop anyways. I don't want it to.

This is actually a word search puzzle. They have to continue until all of the words are found (these are actually being pulled from the web at www.wonderword.com/puzzle.html, along with the puzzle).

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

    • No registered users viewing this page.
  • Posts

    • vPro is the hardware that a number of software packages use. A lot of the first party management tools from Dell, HP, and Lenovo use vPro. Having said all that, it is kind of a nothing burger. Promised a lot, but doesn't really do much for most people.
    • How about an AI generated weekly wrap-up of all AI news. I skim over articles about which AI claims to have a bigger 'brains' this week (or even today), and it changes too often to even consider it worth remembering.
    • Or…because it makes it obvious what they are referring to. Imagine if Microsoft called it Visual Studio 22.
    • Ghost Downloader 3 v3.5.13 by Razvan Serea Ghost Downloader 3 is a high-performance download manager for Windows, featuring AI-enhanced acceleration, intelligent multi-threading, and smart file segmentation. It supports download resumption via .ghd files, global speed limits, and clipboard monitoring for quick link capture. The interface is built with Fluent Design, offering a modern and smooth user experience. Users benefit from advanced features like sparse file support, system tray integration, proxy configuration, secure SSL options, and automatic filename recognition. Ghost Downloader 3 is ideal for users seeking speed, efficiency, and customization. Core Download Features AI-Powered Acceleration: Experimental feature that dynamically increases thread count (up to 253) to maximize bandwidth usage. Intelligent Segmentation: Divides downloads into multiple parts for parallel processing, supporting breakpoint resume via .ghd files. Dynamic Thread Allocation: Automatically splits faster segments to create new threads, enhancing download speeds. Network & Proxy Support Global Speed Limiting: Allows setting a maximum download speed to manage bandwidth usage. Proxy Support: Compatible with SOCKS5, HTTP, and HTTPS proxies, including auto-detection features. SSL Certificate Verification: Optional SSL verification for secure downloads. System Proxy Detection: Automatically detects system proxy settings across Windows, Linux, and macOS. Windows-Specific Features Fluent Design UI: Modern interface with support for Mica, Acrylic, and Aero background effects. Toast Notifications: Supports Windows 10 (1709+) native notifications. Window Border Accent Colors: Enhanced visual integration with Windows 11. Application Features Smart Filename Recognition: Automatically identifies and decodes filenames from HTTP headers, URL parameters, or paths. Sparse File Support: Utilizes sparse file technology on supported file systems (e.g., NTFS) for efficient disk space allocation. Clipboard Monitoring: Optionally monitors clipboard for download links to facilitate quick task additions. Drag-and-Drop and Paste-to-Add: Supports intuitive methods for adding download tasks. Task Management: Features batch addition, per-task thread customization, pause/resume/cancel options, and hash verification (MD5, SHA1, SHA256). System Integration System Tray Support: Minimizes to system tray with background download capabilities. Automatic Startup and Task Resumption: Configurable to launch on system startup and resume unfinished downloads. Single Instance Enforcement: Prevents multiple instances from running simultaneously. Automatic Update Checks: Optionally checks for new versions on startup. Ghost Downloader 3 v3.5.13 changelog: Improved shared memory handling for macOS ARM by @cy920820 in #176 Fixed empty thread creation bug by @Alpha-Qian in #184 Optimized automatic speed boost feature by @Alpha-Qian in #183 Optimized download engine code by @XiaoYouChR Notes: Ghost Downloader may trigger a warning or show a hit on VirusTotal, but if only a few antivirus engines flag it, it’s likely a false positive. The app is open source, so you can inspect the code yourself for peace of mind. If you want to use Ghost-Downloader-3 on Windows 7, please download the version v3.5.8-Portable. Download: Ghost Downloader 64-bit | Portable 64-bit | ~50.0 MB (Open Source) Download: Ghost Downloader ARM64 | Portable ARM64 Links: Ghost Downloader Home Page | MacOS / Linux | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • 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
      +FloatingFatMan
      255
    3. 3
      snowy owl
      251
    4. 4
      ATLien_0
      228
    5. 5
      +Edouard
      191
  • Tell a friend

    Love Neowin? Tell a friend!