Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8316099
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 8, 20262026-06-08T21:16:58+00:00 2026-06-08T21:16:58+00:00

I’ll try and keep this generic for future refference. Let’s suppose our Form has

  • 0

I’ll try and keep this generic for future refference.

Let’s suppose our Form has a grid of Squares (RectangleShapes which we’ll reffer to individually as “points”.) Since the size of this grid can vary before the Form loads, we’ve create all the points in a panel when we first load our Form and can use…

foreach (Squares point in mySquares)

…when we want to change their behavior or appearance. Now, we’ve already developed code to change the color of each individual point when the user clicks left or right. It would look something like:

private void panelGrid_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
    {
        foreach (Squares point in mySquares)
        {
            if (point.Rectangle.Contains(e.Location))     // determine which point to use
            {
                if (e.Button == MouseButtons.Left)
                {
                    Pencil(point);        // left-click to fill color
                }
                else
                {
                    Erase(point);       // right-click to erase color
                }
            }
        }
    panelGrid.Invalidate();            // refreshes grid
    }
}

And this works like a charm. But suppose we need to change this code: Now we also want the color to change when a mouse button is held down, and the cursor is moved onto a new point. (Sort of like MS-Paint: Dragging the pencil tool over multiple pixels fills each one in turn.)

What confuses me is the proper way to implement this behavior properly. To my understanding, I would want the Pencil/Eraser methods to call when:

A.) The mouse enters a “point” AND a button is already held down.

OR

B.) A mouse button becomes pressed. (See above code)

Where this gets tricky for me is determining how best to implement the new checks, and how to perform them on the individual points in the grid – or even if that’s necessary. Any tips?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-08T21:16:59+00:00Added an answer on June 8, 2026 at 9:16 pm

    Sounds like you want the MouseDown and MouseMove events to do the same thing:

    private void MouseStuff(MouseEventArgs e) {
      if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
      {
        foreach (Squares point in mySquares) {
          if (point.Square.Contains(e.Location)) {
            if (e.Button == MouseButtons.Left) {
              Pencil(point);
            } else {
               Erase(point);
            }
          }
        }
        panelGrid.Invalidate();
      }
    }
    

    then try calling it from both events:

    private void panelGrid_MouseDown(object sender, MouseEventArgs e) {
      MouseStuff(e);
    }
    
    private void panelGrid_MouseMove(object sender, MouseEventArgs e) {
      MouseStuff(e);
    }
    

    Look into using a double-buffered panel to make the control less flicky since invalidating the panel on a MouseMove event can be quite intensive:

    public class BufferedPanel : Panel {
      public BufferedPanel() {
        this.DoubleBuffered = true;
        this.ResizeRedraw = true;
      }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I want to count how many characters a certain string has in PHP, but
For some reason, after submitting a string like this Jack’s Spindle from a text
Basically, what I'm trying to create is a page of div tags, each has
this is what i have right now Drawing an RSS feed into the php,
I've got a string that has curly quotes in it. I'd like to replace
Specifically, suppose I start with the string string =hello \'i am \' me And

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.