---
title: "Hjälp med meny"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/66479-hjälp-med-meny"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "andreas_lindh"
published: "2003-01-28T20:42:53.000Z"
updated: "2003-01-29T14:00:28.000Z"
replies: 18
views: 384
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/66479-hjälp-med-meny"
---

# Hjälp med meny

## #1 — andreas_lindh, 2003-01-28T20:42Z

Jag har en meny som ser ut som den bifogade bilden.

När man är inne på Information blir bilden vit. Nu gör jag detta "för hand" på varje sida.

Någon som har en ide om hur man skulle kunna lösa det här med en funktion ?

Bilagor:

- [meny.gif](https://www.webforum.nu/a/984.gif)

Permalänk: https://www.webforum.nu/p/66479

## #2 — erka, 2003-01-28T20:52Z

dthml ? eller sätta css dynamiskt på kontrollen?

Permalänk: https://www.webforum.nu/p/932647

## #3 — andreas_lindh, 2003-01-28T21:29Z

först tänkte jag använda javascript men då måste jag använda frames och det vill jag inte.

Funderar på att skicka med en querystring när man klickar på ett av alternativen och sen kolla om querystringen är samma som id:t på bilden. Men jag vet inte riktigt hur en sån funktion skulle se ut

Permalänk: https://www.webforum.nu/p/932684

## #4 — erka, 2003-01-28T21:34Z

om du gör det till en hyperlinkbutton kontroll kan du ju fånga om någon klickar på den,och där skicka mer värde

Permalänk: https://www.webforum.nu/p/932694

## #5 — andreas_lindh, 2003-01-28T21:51Z

ska testa det

Permalänk: https://www.webforum.nu/p/932712

## #6 — NETwork, 2003-01-29T07:37Z

Självklart ska du använda javascript, och du behöver inte använda frames... gör den i en usercontrol.

Permalänk: https://www.webforum.nu/p/932830

## #7 — andreas_lindh, 2003-01-29T09:07Z

fungerar verkligen det? Tappar inte javascriptet vilken bild som ska vara vald när man går till en ny sida?

Permalänk: https://www.webforum.nu/p/932867

## #8 — NETwork, 2003-01-29T09:21Z

> **andreas_lindh skrev:**
>
> fungerar verkligen det? Tappar inte javascriptet vilken bild som ska vara vald när man går till en ny sida?

Hm, jo det har du ju rätt i... om du ändå ska byta sida så kan du ju lika gärna lösa det serverside förstås, dock tycker jag inte du ska lösa det med querystrings. Här är ett litet tips som vi använder på en liknande meny med en hoovereffekt:

```
<asp:ImageButton id="ImageButton1" [b]onmouseover="this.src='button1_light.gif'" onmouseout="this.src='button1_dark.gif'"[/b] runat="server" ImageUrl="button1_dark.gif" />
```

Sedan har vi logiken för vilken knapp som ska vara markerad i koden:

```
// Klistrar in menyn i aspx-sidan coh sätter higlightpic=1
<uc1:menu id="Menu1" runat="server" [b]HighLightPic="1"[/b]>
</uc1:menu>

//sen i koden kör vi en ifsats för varje menyalternativ där vi sätter en ljusare bild på den knapp som representerar den sida vi befinner oss på för tillfället
if(highLightPic == 1){
  ImageButton1.ImageUrl = "Pics/logo_button1_light.gif";
  ImageButton1.Enabled = false;
}
```

Allt detta ligger alltså i en usercontrol så hela menyn och dess logik endast finns på ett ställe.

Permalänk: https://www.webforum.nu/p/932882

## #9 — andreas_lindh, 2003-01-29T09:38Z

ok.

Men hur ändrar jag higlightpic? Eller ska jag skriva det på varje sida?

Permalänk: https://www.webforum.nu/p/932904

## #10 — NETwork, 2003-01-29T09:41Z

Ja, på varje sida där du har din usercontrol-meny skriver du highlightpic=1,2,3,4 beroende på vilken knapp du vill ska vara markerad (naturligtvis kan du döpa dina knappar till något bättre än 1,2,3...). Sedan har du ett antal ifsatser eller en casesats eller någon annan lämplig kodsnutt som kollar vilken knapp som för tillfället ska ha en annan bild än defaultbilden!

Alltså, är du på informationssidan så kan du exempelvis skriva så här:

```
<uc1:menu id="Menu1" runat="server" HighLight="info">
</uc1:menu>

och sen i koden...
if(highLight == "info"){
  ImageButton1.ImageUrl = "info_light.gif";
}
```

Permalänk: https://www.webforum.nu/p/932906

## #11 — andreas_lindh, 2003-01-29T10:28Z

Jag har testat det här nu men får det inte att fungera

på aspx sidan

```
<inloggad:meny runat="server" HighLightedPic="start" />
```

I usercontrolen 

```
<asp:imagebutton borderwidth="0" id="ImageButton1" onmouseover="this.src='grafik/kundermeny_01.gif'" onmouseout="this.src='grafik/undermeny_01.gif'" runat="server" imageurl="grafik/undermeny_01.gif" />
```

och koden för usercontrolen

```
    Private _highlightedpic As String = ""
    Public Property highlightedpic() As String
        Get
            _highlightedpic = _highlightedpic
        End Get
        Set(ByVal Value As String)
            _highlightedpic = Value
        End Set
    End Property

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim highlightedpic As String
        Dim imagebutton1 As ImageButton
        Dim imagebutton2 As ImageButton
        Dim imagebutton3 As ImageButton
        If highlightedpic = "start" Then
            imagebutton1.ImageUrl = "grafik/kundermeny_01.gif"
            imagebutton1.Enabled = False
        ElseIf highlightedpic = "info" Then
            imagebutton2.ImageUrl = "grafik/kundermeny_02.gif"
            imagebutton1.Enabled = False
        ElseIf highlightedpic = "reg" Then
            imagebutton2.ImageUrl = "grafik/kundermeny_03.gif"
            imagebutton1.Enabled = False
        End If
    End Sub
```

Permalänk: https://www.webforum.nu/p/932940

## #12 — NETwork, 2003-01-29T10:47Z

Du ska nog inte deklarera dina buttons i pageload utan direkt under klassen... 

```
public abstract class Menu : System.Web.UI.UserControl {
protected System.Web.UI.WebControls.ImageButton ImageButton1;

private int highLightPic;
  public int HighLightPic{
    set{
      highLightPic = value;
    }
}

private void Page_Load(object sender, System.EventArgs e) {
  if(highLightPic == 1){
    ImageButton1.ImageUrl = "button.gif";
  }
}
```

...fast motsvarande i vb då... som en liten parentes så behöver du antagligen bara sätta highlight, därför kan du plocka bort "get". :)

Permalänk: https://www.webforum.nu/p/932953

## #13 — andreas_lindh, 2003-01-29T11:28Z

Jag tror att jag måste ha med get för när jag tar bort det säger vs

h:\\inetpub\\wwwroot\\cup\\lmeny.ascx.vb(24): Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'.

Nu fungerar det. Jag kollade på fel sak i min if sats. Skulla ju kolla

\_highlightedpic

och inte

highlightedpic

Permalänk: https://www.webforum.nu/p/932989

## #14 — andreas_lindh, 2003-01-29T11:31Z

En fråga till. Kan jag sätta navigateurl på imagebuttons eller ska jag göra länknigen på något annat sätt

Permalänk: https://www.webforum.nu/p/932990

## #15 — [AMD]Zmaster, 2003-01-29T11:41Z

Kan du inte posta hela koden? (vill gärna se i helhet)

Permalänk: https://www.webforum.nu/p/932993

## #16 — andreas_lindh, 2003-01-29T11:48Z

här kommer den

aspx sidan

```
<%@ register tagprefix="Inloggad" tagname="meny" src="lmeny.ascx" %>

<inloggad:meny runat="server" HighLightedPic="start" />
```

usercontrolen

```
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="lmeny.ascx.vb" Inherits="cup.lmeny1" %>
<asp:imagebutton borderwidth="0" id="ImageButton1" onmouseover="this.src='grafik/kundermeny_01.gif'" onmouseout="this.src='grafik/undermeny_01.gif'" runat="server" imageurl="grafik/undermeny_01.gif" />
```

Koden i usercontrolens codebehind

```
Public MustInherit Class lmeny1
    Inherits System.Web.UI.UserControl

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Public imagebutton1 As ImageButton
    Public imagebutton2 As ImageButton
    Public imagebutton3 As ImageButton

    Private _highlightedpic As String = ""
    Public Property highlightedpic() As String
        Get
            _highlightedpic = _highlightedpic
        End Get
        Set(ByVal Value As String)
            _highlightedpic = Value
        End Set
    End Property

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If _highlightedpic = "start" Then
            imagebutton1.ImageUrl = "grafik/kundermeny_01.gif"
            imagebutton1.Enabled = False
        ElseIf _highlightedpic = "info" Then
            imagebutton2.ImageUrl = "grafik/kundermeny_02.gif"
            imagebutton2.Enabled = False
        ElseIf _highlightedpic = "reg" Then
            imagebutton3.ImageUrl = "grafik/kundermeny_03.gif"
            imagebutton3.Enabled = False
        End If
    End Sub

End Class
```

Permalänk: https://www.webforum.nu/p/932996

## #17 — NETwork, 2003-01-29T13:23Z

Eftersom det är en imagebutton så får du göra länkningen i koden, navigateurl är det bara hyperlinks som har och det kan du inte använda i det här fallet.

```
  private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e) {
  Response.Redirect = "länken";
}
```

Permalänk: https://www.webforum.nu/p/933066

## #18 — andreas_lindh, 2003-01-29T13:56Z

Tack. Det fungerar bra förutom på en sida där jag har ett formulär med validering. Då postas formuläret när jag trycker på ett av menyalternativen

Permalänk: https://www.webforum.nu/p/933078

## #19 — andreas_lindh, 2003-01-29T14:00Z

löste det

satte causesvalidation="False" på menyalternativen

Permalänk: https://www.webforum.nu/p/933082

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/66479-hjälp-med-meny
