I public class har jag lagt mina variabler Klippt ut några bitar ur koden för att visa, ganska Förstår inte riktigt vad koden gör/ska göra (behöver du verkligen alla variabler?). Tack för ditt svar! Om du använder funktionen ShowDate(), eller nåt i liknande stil så behöver du inte klistra in samma kodsjok flera gånger om, utan kan återanvända samma funktion för alla dagar på året. Duplicerad kod bör för det mesta undvikas.Räckvidd på en variabel
I Form1.load ligger en massa kod som det är variabler i.
När jag gör en knapp och skriver en av dessa variabler där
med ett annat värde så händer inget.
Har provat ändra från dim till public och en massa annat
men inget får variabeln i Form1 att ändras när jag trycker på
min knapp där det ligger samma variabel med ett annat värde.
Tack på förhand för svar.
Edit...
Glömde skriva det gällde Visual Basic 2010 och det hamna i fel tråd, sorry.Sv:Räckvidd på en variabel
mycket annars för att lägga in här.
Jag provade att lägga thismonth under en knapp och ändrade
värdet på den. Hände ingenting. Nedanstående kod ligger i
Form1_Load.
Variabler under en knapp ska styra variabler som ligger i Form1_Load
men det kanske är omöjligt. Har som sagt provat en himla massa varianter.
Skriver i Form1_Load
Thismonth = 1
Så blir det Januari i labels
Skriver jag det under en knapp händer ingenting.
Public Class Kalender
Dim thisyear As Integer = Microsoft.VisualBasic.DateAndTime.Year(Now)
Dim thismonth As Integer = Microsoft.VisualBasic.DateAndTime.Month(Now)
Dim thisday As Integer = Microsoft.VisualBasic.DateAndTime.Day(Now)
Dim dag(32) As Date
Dim dagnamn(31) As Label
Dim dagnummer(31) As Date
Dim nummer(31) As Label
Dim labVeckonr(4) As Label
Dim datum As Date
----------- Nedan Form1_Load------------
datum = DateSerial(thisyear, thismonth, thisday)
dagnamn(1) = lblMon1
dag(1) = DateSerial(thisyear, thismonth, 1)
dagnamn(1).Text = dag(1).ToString("ddd")
If dag(1).DayOfWeek = DayOfWeek.Sunday Then
dagnamn(1).ForeColor = Color.Red
End If
If dag(1).DayOfWeek = DayOfWeek.Sunday Then
Panel1.BorderStyle = BorderStyle.Fixed3D
End IfSv: Räckvidd på en variabel
Public Class Kalender
Private displayDate As Date = Now
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
displayDate = New Date(Now.Year, Now.Month, 1)
ShowDate(Label1, displayDate)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
displayDate = displayDate.AddDays(34)
ShowDate(Label1, displayDate)
End Sub
Private Sub ShowDate(lbl As Label, dt As Date)
lbl.Text = dt.ToString("ddd")
If (dt.DayOfWeek = DayOfWeek.Sunday) Then
lbl.BorderStyle = BorderStyle.Fixed3D
lbl.ForeColor = Color.Red
Else
lbl.BorderStyle = BorderStyle.None
lbl.ForeColor = Color.Black
End If
End Sub
End Class
På modulnivå (d.v.s. inte inuti en metod) är det ekvivalent att skriva
Dim v As SomeType
' eller
Private v As SomeType
Dock skulle jag rekommendera det senare sättet eftersom det framgår tydligare vad som avses (särskilt om koden läses av nån med en bakgrund i C#).
Om variabeldeklarationer i VB
Skillnaden mellan public och private m.m.
Sv:Räckvidd på en variabel
Har 31 sådana rader som skriver datum i en label (31 labels)
plus massa labels för nummer och dylika saker i en kalender.
Så nedanstående är bara en dag av 30. Klumpigt men jag
förstår i alla fall det :)
Om jag skriver: thismonth = 1 i Form_Load1 så är det månad Januari
i Label dagnamn(1)
Men skriver skriver jag thismonth = 1 i Private Sub btnOka_Click
så händer inget.
Jag måste då lägga in nedanstående text även i Private Sub btnOka_Click
för att det ska fungerar.
Blir kaka på kaka men samma text på två olika ställen.
dagnamn(1) = lblMon1
dag(1) = DateSerial(thisyear, thismonth, 1)
dagnamn(1).Text = dag(1).ToString("ddd")
If dag(1).DayOfWeek = DayOfWeek.Sunday Then
dagnamn(1).ForeColor = Color.Red
End If
If dag(1).DayOfWeek = DayOfWeek.Sunday Then
Panel1.BorderStyle = BorderStyle.Fixed3D
End IfSv: Räckvidd på en variabel