LED blink once during mode switch

i would like to have my rgb led blink a different color for all 3 modes. i only want the led to blink one time for modes 1,2,3. they way i have tried it is not working because it keeps looping and blinking more than once. here part of the code im trying to add it to

if (buttonPushCounter == 0) {
    if (digitalRead(triggerswitchpin) == HIGH)
    {
      digitalWrite(solenoidpin, HIGH);
      delay(9);
      digitalWrite(solenoidpin, LOW);
      while (digitalRead(triggerswitchpin) == HIGH) {
        digitalWrite(solenoidpin, LOW);
      }
    }
    else if (digitalRead(triggerswitchpin) == LOW)
      digitalWrite(solenoidpin, LOW);

id like to to jsut lets say, bink red 1 time for mode 1, green one time for mode 2 etc
how can i set this up so i can make this work. thankyou!

It would be easier to provide help if you posted your whole program and described what you mean by mode1, mode 2 etc

I have 2 buttons. one is mode select and one is the trigger. when i hit the mode select id like the led to flash a different color indicating im in that mode. i only want it to flash 1 time per mode just to indicate what one of the 3 modes im in.

const int solenoidpin = 5;
const int triggerswitchpin = 7;
boolean running = false;
const int  buttonPin = 2;
const int ledPin = 13;
const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;

void setup() {
  pinMode (13, OUTPUT); //LASER
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode (solenoidpin, OUTPUT);
  pinMode(triggerswitchpin, INPUT);
  digitalWrite(triggerswitchpin, HIGH);
  Serial.begin(9600);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(100);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(100);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(100);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(100);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(100);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
}
void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    } else {
      Serial.println("off");
    }
    delay(50);
  }
  lastButtonState = buttonState;
  if (buttonPushCounter == 0) {
    if (digitalRead(triggerswitchpin) == HIGH)
    {
      digitalWrite(RED_PIN, HIGH);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      delay(20);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      digitalWrite(solenoidpin, HIGH);
      delay(9);
      digitalWrite(solenoidpin, LOW);
      while (digitalRead(triggerswitchpin) == HIGH) {
        digitalWrite(solenoidpin, LOW);
      }
    }
    else if (digitalRead(triggerswitchpin) == LOW)
      digitalWrite(solenoidpin, LOW);
  }
  if (buttonPushCounter == 1)  {
    if (digitalRead(triggerswitchpin) == HIGH)
    {
      digitalWrite(solenoidpin, HIGH);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, HIGH);
      digitalWrite(BLUE_PIN, LOW);
      delay (20);
      digitalWrite(solenoidpin, LOW);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      delay(80);
      digitalWrite(solenoidpin, HIGH);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, HIGH);
      digitalWrite(BLUE_PIN, LOW);
      delay (20);
      digitalWrite(solenoidpin, LOW);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      delay(80);
      digitalWrite(solenoidpin, HIGH);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, HIGH);
      digitalWrite(BLUE_PIN, LOW);
      delay (20);
      digitalWrite(solenoidpin, LOW);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      delay(80);
      while (digitalRead(triggerswitchpin) == HIGH) {
        digitalWrite(solenoidpin, LOW);
      }
    }
    else if (digitalRead(triggerswitchpin) == LOW)
      digitalWrite(solenoidpin, LOW);
  }
  if (buttonPushCounter == 2) {
    if (digitalRead(triggerswitchpin) == HIGH)
    {
      digitalWrite(RED_PIN, HIGH);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, HIGH);
      delay(20);
      digitalWrite(RED_PIN, LOW);
      digitalWrite(GREEN_PIN, LOW);
      digitalWrite(BLUE_PIN, LOW);
      digitalWrite(solenoidpin, HIGH);
      delay (20);
      digitalWrite(solenoidpin, LOW);
      delay(20);
    }
    else if (digitalRead(triggerswitchpin) == LOW)
      digitalWrite(solenoidpin, LOW);
  }
  if (buttonPushCounter == 3) {
    digitalWrite(solenoidpin, LOW);
    buttonPushCounter = 0;

  }
}

Presumably your states equate to the value of buttonPushCounter. The first thing that I would do is to change the name of that variable to make the code easier to understand. Why not be radical and name it currentState

When you change the state you could turn on the appropriate LED, delay() a while, then turn it off. A convenient way to do that would be to hold the LED pin numbers in an array indexed by currentState.

There are better ways to do the flash than using delay() but using it will give you a quick win. If your code must not be blocked by the flash then you will need to look at using millis() for timing it.

thankyou. i read about millis and try to get familiar with it.

Using millis() for timing is not difficult but it does require more work than simply using delay()

In you case you would save the value of millis() when you turn on the LED then, assuming that the loop() function is running freely and has no blocking code in it, check each time through loop() whether the required period has passed and if so turn off the LED. If not, then keep going round loop() doing other things.

If the loop() function does have blocking code in it then you will need to fix that.