Kein direktes Problem, eher Verbesserungsvorschläge ?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Kein direktes Problem, eher Verbesserungsvorschläge ?

    Hi @ all,

    ich habe mich kürzlich mal mit dem Thema GDI/GDI+ beschäftigt und mir testweise eine neue Progressbar geschrieben, diese funktioniert soweit ich dies beeurteilen kann sehr gut, aber naja ich Anfänger, Ihr Profis ^^
    daher wollte ich nur Fragen / darum bitten ob Ihr euch meinen Code einmal anschauen/tesen wollt, und mir Verbesserungsvorschläge gebt, also in die Richtung das könnt eman besser gestalten oder das ist schlecht gelöst,
    damit ich weiss was ich zukünftig daran verbessern könnte.

    Danke und Greets


    Spoiler anzeigen

    Quellcode

    1. Public Class DKProgress
    2. Public Sub New()
    3. InitializeComponent()
    4. Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
    5. Me.UpdateStyles()
    6. End Sub
    7. #Region "Deklaration"
    8. Public Event BarValueChanged()
    9. Public Event BarValueMinReached()
    10. Public Event BarValueMaxReached()
    11. Private BarValueVal As Double = 0
    12. Private BarValueMinVal As Double = 0
    13. Private BarValueMaxVal As Double = 100
    14. Private BarRightToLeftVal As Boolean = False
    15. Private BarEffectBorderVal As Boolean = True
    16. Private BarEffectGlassVal As Boolean = False
    17. Public Enum BarColorVersionEnum : Singlecolor : Gradient : End Enum
    18. Private BarColorVersionVal As BarColorVersionEnum = BarColorVersionEnum.Singlecolor
    19. Private BarColorSingleVal As Color = Color.DarkRed
    20. Private BarColorGradient1Val As Color = Color.LimeGreen
    21. Private BarColorGradient2Val As Color = Color.MidnightBlue
    22. Private BarColorBorderVal As Color = Color.Black
    23. Private BarColorGradientModeVal As LinearGradientMode = LinearGradientMode.Vertical
    24. Private BarColorGradientXOffsetVal As Integer = 0
    25. Private BarColorGradientYOffsetVal As Integer = 0
    26. Public BarQualitySmoothingModeVal As SmoothingMode = SmoothingMode.HighQuality
    27. Private BarQualityInterpolationModeVal As InterpolationMode = InterpolationMode.HighQualityBicubic
    28. Private BarQualityCompositingVal As CompositingQuality = CompositingQuality.HighQuality
    29. Private BarImageBarVal As Boolean = False
    30. Private BarImageVal As Bitmap
    31. Private LabelVal As Boolean = True
    32. Private LabelShowUpperValueVal As Boolean = False
    33. Private LabelDropShadowVal As Boolean = False
    34. Private LabelDropShadowXOffsetVal As Integer = 1
    35. Private LabelDropShadowYOffsetVal As Integer = 1
    36. Private LabelTextFontVal As Font = Me.Font
    37. Private LabelTextXOffsetVal As Integer = 0
    38. Private LabelTextYOffsetVal As Integer = 0
    39. Private LabelTextAdditionalVal As String = " %"
    40. Private LabelTextDelimeterVal As String = " / "
    41. Public Enum LabelTextAlignEnum : Left : Center : Right : End Enum
    42. Private LabelTextAlignVal As LabelTextAlignEnum = LabelTextAlignEnum.Center
    43. Public Enum LabelTextVersionEnum : Percent : Value : End Enum
    44. Private LabelTextVersionVal As LabelTextVersionEnum = LabelTextVersionEnum.Percent
    45. Private LabelColorSingleVal As Color = Color.Black
    46. Private LabelColorGradient1Val As Color = Color.LimeGreen
    47. Private LabelColorGradient2Val As Color = Color.MidnightBlue
    48. Private LabelColorDropShadowVal As Color = Color.Black
    49. Private LabelColorGradientModeVal As LinearGradientMode = LinearGradientMode.Vertical
    50. Public Enum LabelColorVersionEnum : Singlecolor : Gradient : End Enum
    51. Private LabelColorVersionVal As LabelColorVersionEnum = LabelColorVersionEnum.Singlecolor
    52. Private LabelTextQualityVal As TextRenderingHint = TextRenderingHint.ClearTypeGridFit
    53. #End Region
    54. #Region "Property get-set"
    55. Public Property BarValue As Double
    56. Get
    57. Return BarValueVal
    58. End Get
    59. Set(value As Double)
    60. If value < BarValueMinVal Then value = BarValueMinVal Else If value > BarValueMaxVal Then value = BarValueMaxVal
    61. BarValueVal = value
    62. RaiseEvent BarValueChanged()
    63. If BarValueVal = BarValueMinVal Then RaiseEvent BarValueMinReached() Else If BarValueVal = BarValueMaxVal Then RaiseEvent BarValueMaxReached()
    64. Me.Invalidate()
    65. End Set
    66. End Property
    67. Public Property BarValueMinimum As Double
    68. Get
    69. Return BarValueMinVal
    70. End Get
    71. Set(value As Double)
    72. If value > BarValueMaxVal Then value = BarValueMaxVal - 1
    73. BarValueMinVal = value
    74. Me.Invalidate()
    75. End Set
    76. End Property
    77. Public Property BarValueMaximum As Double
    78. Get
    79. Return BarValueMaxVal
    80. End Get
    81. Set(value As Double)
    82. If value < BarValueMinVal Then value = BarValueMinVal + 1
    83. BarValueMaxVal = value
    84. Me.Invalidate()
    85. End Set
    86. End Property
    87. Public Property BarRightToLeft As Boolean
    88. Get
    89. Return BarRightToLeftVal
    90. End Get
    91. Set(value As Boolean)
    92. BarRightToLeftVal = value
    93. Me.Invalidate()
    94. End Set
    95. End Property
    96. Public Property BarEffectBorder As Boolean
    97. Get
    98. Return BarEffectBorderVal
    99. End Get
    100. Set(value As Boolean)
    101. BarEffectBorderVal = value
    102. Me.Invalidate()
    103. End Set
    104. End Property
    105. Public Property BarEffectGlass As Boolean
    106. Get
    107. Return BarEffectGlassVal
    108. End Get
    109. Set(value As Boolean)
    110. BarEffectGlassVal = value
    111. Me.Invalidate()
    112. End Set
    113. End Property
    114. Public Property BarColorSingle As Color
    115. Get
    116. Return BarColorSingleVal
    117. End Get
    118. Set(value As Color)
    119. BarColorSingleVal = value
    120. Me.Invalidate()
    121. End Set
    122. End Property
    123. Public Property BarColorGradient1 As Color
    124. Get
    125. Return BarColorGradient1Val
    126. End Get
    127. Set(value As Color)
    128. BarColorGradient1Val = value
    129. Me.Invalidate()
    130. End Set
    131. End Property
    132. Public Property BarColorGradient2 As Color
    133. Get
    134. Return BarColorGradient2Val
    135. End Get
    136. Set(value As Color)
    137. BarColorGradient2Val = value
    138. Me.Invalidate()
    139. End Set
    140. End Property
    141. Public Property BarColorBorder As Color
    142. Get
    143. Return BarColorBorderVal
    144. End Get
    145. Set(value As Color)
    146. BarColorBorderVal = value
    147. BarEffectBorder = True
    148. Me.Invalidate()
    149. End Set
    150. End Property
    151. Public Property BarColorVersion() As BarColorVersionEnum
    152. Get
    153. Return BarColorVersionVal
    154. End Get
    155. Set(value As BarColorVersionEnum)
    156. BarColorVersionVal = value
    157. Me.Invalidate()
    158. End Set
    159. End Property
    160. Public Property BarColorGradientMode() As LinearGradientMode
    161. Get
    162. Return BarColorGradientModeVal
    163. End Get
    164. Set(value As LinearGradientMode)
    165. BarColorGradientModeVal = value
    166. Me.Invalidate()
    167. End Set
    168. End Property
    169. Public Property BarColorGradientXOffset As Integer
    170. Get
    171. Return BarColorGradientXOffsetVal
    172. End Get
    173. Set(value As Integer)
    174. BarColorGradientXOffsetVal = value
    175. Me.Invalidate()
    176. End Set
    177. End Property
    178. Public Property BarColorGradientYOffset As Integer
    179. Get
    180. Return BarColorGradientYOffsetVal
    181. End Get
    182. Set(value As Integer)
    183. BarColorGradientYOffsetVal = value
    184. Me.Invalidate()
    185. End Set
    186. End Property
    187. Public Property BarQualityInterpolationMode As InterpolationMode
    188. Get
    189. Return BarQualityInterpolationModeVal
    190. End Get
    191. Set(value As InterpolationMode)
    192. BarQualityInterpolationModeVal = value
    193. Me.Invalidate()
    194. End Set
    195. End Property
    196. Public Property BarQualityCompositing As CompositingQuality
    197. Get
    198. Return BarQualityCompositingVal
    199. End Get
    200. Set(value As CompositingQuality)
    201. BarQualityCompositingVal = value
    202. Me.Invalidate()
    203. End Set
    204. End Property
    205. Private Property BarWithImage As Boolean
    206. Get
    207. Return BarImageBarVal
    208. End Get
    209. Set(value As Boolean)
    210. BarImageBarVal = value
    211. Me.Invalidate()
    212. End Set
    213. End Property
    214. Public Property BarImage As Bitmap
    215. Get
    216. Return BarImageVal
    217. End Get
    218. Set(value As Bitmap)
    219. If Not value Is Nothing Then
    220. BarImageVal = value
    221. Me.Invalidate()
    222. BarWithImage = True
    223. Else
    224. BarImageVal = Nothing
    225. Me.Invalidate()
    226. BarWithImage = False
    227. End If
    228. End Set
    229. End Property
    230. Public Property Label As Boolean
    231. Get
    232. Return LabelVal
    233. End Get
    234. Set(value As Boolean)
    235. LabelVal = value
    236. Me.Invalidate()
    237. End Set
    238. End Property
    239. Public Property LabelShowUpperValue As Boolean
    240. Get
    241. Return LabelShowUpperValueVal
    242. End Get
    243. Set(value As Boolean)
    244. LabelShowUpperValueVal = value
    245. Me.Invalidate()
    246. End Set
    247. End Property
    248. Public Property LabelDropShadow As Boolean
    249. Get
    250. Return LabelDropShadowVal
    251. End Get
    252. Set(value As Boolean)
    253. LabelDropShadowVal = value
    254. Me.Invalidate()
    255. End Set
    256. End Property
    257. Public Property LabelDropShadowXOffset As Integer
    258. Get
    259. Return LabelDropShadowXOffsetVal
    260. End Get
    261. Set(value As Integer)
    262. LabelDropShadowXOffsetVal = value
    263. Me.Invalidate()
    264. End Set
    265. End Property
    266. Public Property LabelDropShadowYOffset As Integer
    267. Get
    268. Return LabelDropShadowYOffsetVal
    269. End Get
    270. Set(value As Integer)
    271. LabelDropShadowYOffsetVal = value
    272. Me.Invalidate()
    273. End Set
    274. End Property
    275. Public Property LabelColorVersion() As LabelColorVersionEnum
    276. Get
    277. Return LabelColorVersionVal
    278. End Get
    279. Set(value As LabelColorVersionEnum)
    280. LabelColorVersionVal = value
    281. Me.Invalidate()
    282. End Set
    283. End Property
    284. Public Property LabelColorSingle As Color
    285. Get
    286. Return LabelColorSingleVal
    287. End Get
    288. Set(value As Color)
    289. LabelColorSingleVal = value
    290. Me.Invalidate()
    291. End Set
    292. End Property
    293. Public Property LabelColorGradient1 As Color
    294. Get
    295. Return LabelColorGradient1Val
    296. End Get
    297. Set(value As Color)
    298. LabelColorGradient1Val = value
    299. Me.Invalidate()
    300. End Set
    301. End Property
    302. Public Property LabelColorGradient2 As Color
    303. Get
    304. Return LabelColorGradient2Val
    305. End Get
    306. Set(value As Color)
    307. LabelColorGradient2Val = value
    308. Me.Invalidate()
    309. End Set
    310. End Property
    311. Public Property LabelColorDropShadow As Color
    312. Get
    313. Return LabelColorDropShadowVal
    314. End Get
    315. Set(value As Color)
    316. LabelColorDropShadowVal = value
    317. Me.Invalidate()
    318. End Set
    319. End Property
    320. Public Property LabelColorGradientMode() As LinearGradientMode
    321. Get
    322. Return LabelColorGradientModeVal
    323. End Get
    324. Set(value As LinearGradientMode)
    325. LabelColorGradientModeVal = value
    326. Me.Invalidate()
    327. End Set
    328. End Property
    329. Public Property LabelTextXOffset As Integer
    330. Get
    331. Return LabelTextXOffsetVal
    332. End Get
    333. Set(value As Integer)
    334. LabelTextXOffsetVal = value
    335. Me.Invalidate()
    336. End Set
    337. End Property
    338. Public Property LabelTextYOffset As Integer
    339. Get
    340. Return LabelTextYOffsetVal
    341. End Get
    342. Set(value As Integer)
    343. LabelTextYOffsetVal = value
    344. Me.Invalidate()
    345. End Set
    346. End Property
    347. Public Property LabelTextDelimeter As String
    348. Get
    349. Return LabelTextDelimeterVal
    350. End Get
    351. Set(value As String)
    352. LabelTextDelimeterVal = value
    353. Me.Invalidate()
    354. End Set
    355. End Property
    356. Public Property LabelTextAdditional As String
    357. Get
    358. Return LabelTextAdditionalVal
    359. End Get
    360. Set(value As String)
    361. LabelTextAdditionalVal = value
    362. Me.Invalidate()
    363. End Set
    364. End Property
    365. Public Property LabelTextFont As Font
    366. Get
    367. Return LabelTextFontVal
    368. End Get
    369. Set(value As Font)
    370. LabelTextFontVal = value
    371. Me.Invalidate()
    372. End Set
    373. End Property
    374. Public Property LabelTextAlign() As LabelTextAlignEnum
    375. Get
    376. Return LabelTextAlignVal
    377. End Get
    378. Set(value As LabelTextAlignEnum)
    379. LabelTextAlignVal = value
    380. Me.Invalidate()
    381. End Set
    382. End Property
    383. Public Property LabelTextVersion() As LabelTextVersionEnum
    384. Get
    385. Return LabelTextVersionVal
    386. End Get
    387. Set(value As LabelTextVersionEnum)
    388. LabelTextVersionVal = value
    389. If value = LabelTextVersionEnum.Value AndAlso LabelTextAdditional = " %" Then LabelTextAdditional = " V"
    390. If value = LabelTextVersionEnum.Percent AndAlso LabelTextAdditional = " V" Then LabelTextAdditional = " %"
    391. Me.Invalidate()
    392. End Set
    393. End Property
    394. Public Property LabelTextQuality() As TextRenderingHint
    395. Get
    396. Return LabelTextQualityVal
    397. End Get
    398. Set(value As TextRenderingHint)
    399. LabelTextQualityVal = value
    400. Me.Invalidate()
    401. End Set
    402. End Property
    403. #End Region
    404. #Region "Drawing"
    405. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    406. With e.Graphics
    407. .TextRenderingHint = LabelTextQualityVal
    408. .SmoothingMode = BarQualitySmoothingModeVal
    409. .InterpolationMode = BarQualityInterpolationModeVal
    410. .CompositingQuality = BarQualityCompositingVal
    411. End With
    412. Dim Rect As New Rectangle(-1, -1, Me.Width + 1, Me.Height + 1)
    413. Dim percent As Decimal = CDec((BarValue - BarValueMinVal) / (BarValueMaxVal - BarValueMinVal))
    414. Rect.Width = CInt(Rect.Width * percent)
    415. If BarWithImage Then
    416. Dim TBrush As New TextureBrush(BarImageVal)
    417. If BarRightToLeftVal Then
    418. e.Graphics.FillRectangle(TBrush, New Rectangle(Me.Width - Rect.Width, Rect.Y, Rect.Width, Rect.Height))
    419. Else
    420. e.Graphics.FillRectangle(TBrush, New Rectangle(Rect.X, Rect.Y, Rect.Width, Rect.Height))
    421. End If
    422. TBrush.Dispose()
    423. Else
    424. If BarColorVersionVal = LabelColorVersionEnum.Gradient Then
    425. Dim LGBBrush As New LinearGradientBrush(New Rectangle(0, 0, Me.Width + BarColorGradientXOffsetVal, Me.Height + BarColorGradientYOffsetVal), BarColorGradient1Val, BarColorGradient2Val, BarColorGradientModeVal)
    426. If BarRightToLeftVal Then
    427. e.Graphics.FillRectangle(LGBBrush, New Rectangle(Me.Width - Rect.Width, Rect.Y, Rect.Width, Rect.Height))
    428. Else
    429. e.Graphics.FillRectangle(LGBBrush, Rect)
    430. End If
    431. LGBBrush.Dispose()
    432. Else
    433. Dim SCBrush As New SolidBrush(BarColorSingleVal)
    434. If BarRightToLeftVal Then
    435. e.Graphics.FillRectangle(SCBrush, New Rectangle(Me.Width - Rect.Width, Rect.Y, Rect.Width, Rect.Height))
    436. Else
    437. e.Graphics.FillRectangle(SCBrush, Rect)
    438. End If
    439. SCBrush.Dispose()
    440. End If
    441. End If
    442. If BarEffectGlassVal Then
    443. Dim BGEBrush As New LinearGradientBrush(New Rectangle(0, 0, Me.Width, CInt(Me.Height / 2)), Color.FromArgb(200, 255, 255, 255), Color.FromArgb(30, 255, 255, 255), LinearGradientMode.Vertical)
    444. If BarRightToLeftVal Then
    445. e.Graphics.FillRectangle(BGEBrush, New Rectangle(Me.Width - Rect.Width, Rect.Y, Rect.Width, CInt(Rect.Height / 2)))
    446. Else
    447. e.Graphics.FillRectangle(BGEBrush, New Rectangle(Rect.X, Rect.Y, Rect.Width, CInt(Rect.Height / 2)))
    448. End If
    449. BGEBrush.Dispose()
    450. End If
    451. If LabelVal Then
    452. Dim LabelString As String = GetFinalLabelString()
    453. Dim LabelStringSize As SizeF = e.Graphics.MeasureString(LabelString, LabelTextFontVal)
    454. Dim LabelPosition As PointF = GetFinalLabelPosition(LabelStringSize)
    455. If LabelColorVersionVal = LabelColorVersionEnum.Gradient Then
    456. If LabelDropShadowVal Then
    457. Dim LSCShadowBrush As New SolidBrush(LabelColorDropShadowVal)
    458. e.Graphics.DrawString(LabelString, LabelTextFontVal, LSCShadowBrush, LabelPosition.X + LabelDropShadowXOffsetVal, LabelPosition.Y + LabelDropShadowYOffsetVal, StringFormat.GenericTypographic)
    459. LSCShadowBrush.Dispose()
    460. End If
    461. Dim LLGBBrush As New LinearGradientBrush(New Rectangle(0, 0, CInt(LabelStringSize.Width), Me.Height), LabelColorGradient1Val, LabelColorGradient2Val, LabelColorGradientModeVal)
    462. e.Graphics.DrawString(LabelString, LabelTextFontVal, LLGBBrush, LabelPosition, StringFormat.GenericTypographic)
    463. LLGBBrush.Dispose()
    464. Else
    465. If LabelDropShadowVal Then
    466. Dim LSCShadowBrush As New SolidBrush(LabelColorDropShadowVal)
    467. e.Graphics.DrawString(LabelString, LabelTextFontVal, LSCShadowBrush, LabelPosition.X + LabelDropShadowXOffsetVal, LabelPosition.Y + LabelDropShadowYOffsetVal, StringFormat.GenericTypographic)
    468. LSCShadowBrush.Dispose()
    469. End If
    470. Dim LSCBrush As New SolidBrush(LabelColorSingleVal)
    471. e.Graphics.DrawString(LabelString, LabelTextFontVal, LSCBrush, LabelPosition, StringFormat.GenericTypographic)
    472. LSCBrush.Dispose()
    473. End If
    474. End If
    475. If BarEffectBorderVal Then
    476. Dim BBBrush As New SolidBrush(BarColorBorderVal)
    477. Dim BBPen As New Pen(BBBrush)
    478. e.Graphics.DrawRectangle(BBPen, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1))
    479. BBPen.Dispose()
    480. BBBrush.Dispose()
    481. End If
    482. End Sub
    483. #End Region
    484. #Region "Private Subs/Functions"
    485. Private Function GetFinalLabelString() As String
    486. Dim LabelString As String = ""
    487. If LabelTextVersionVal = LabelTextVersionEnum.Percent Then
    488. If LabelShowUpperValueVal Then
    489. LabelString = CInt(CDec((BarValue - BarValueMinVal) / (BarValueMaxVal - BarValueMinVal)) * 100).ToString & LabelTextDelimeterVal & "100" & LabelTextAdditionalVal
    490. Else
    491. LabelString = CInt(CDec((BarValue - BarValueMinVal) / (BarValueMaxVal - BarValueMinVal)) * 100).ToString & LabelTextAdditionalVal
    492. End If
    493. Else
    494. If LabelShowUpperValueVal Then
    495. LabelString = BarValue.ToString & LabelTextDelimeterVal & BarValueMaximum & LabelTextAdditionalVal
    496. Else
    497. LabelString = BarValue.ToString & LabelTextAdditionalVal
    498. End If
    499. End If
    500. Return LabelString
    501. End Function
    502. Private Function GetFinalLabelPosition(ByVal LabelStringSize As SizeF) As PointF
    503. Dim LabelPosition As PointF
    504. If LabelTextAlignVal = LabelTextAlignEnum.Left Then
    505. LabelPosition = New PointF(5 + LabelTextXOffsetVal, CInt(((Me.Height / 2) - (LabelStringSize.Height / 2))) + LabelTextYOffsetVal)
    506. ElseIf LabelTextAlignVal = LabelTextAlignEnum.Center Then
    507. LabelPosition = New PointF(CInt(((Me.Width / 2) - (LabelStringSize.Width / 2)) + LabelTextXOffsetVal), CInt(((Me.Height / 2) - (LabelStringSize.Height / 2))) + LabelTextYOffsetVal)
    508. Else ' Right
    509. LabelPosition = New PointF(((Me.Width - 5) - LabelStringSize.Width) + LabelTextXOffsetVal, CInt(((Me.Height / 2) - (LabelStringSize.Height / 2))) + LabelTextYOffsetVal)
    510. End If
    511. Return LabelPosition
    512. End Function
    513. #End Region
    514. #Region "Public Subs/functions"
    515. ''' <summary>
    516. ''' Adds the Value to the ProgressValue
    517. ''' </summary>
    518. ''' <param name="Value">As Double, added to the ProgressValue</param>
    519. Public Sub PerformValueStep(ByVal Value As Double)
    520. Me.BarValue += Value
    521. End Sub
    522. ''' <summary>
    523. ''' Calculates how much have to be Added to the ProgressValue based on how much Percent you want to be added.
    524. ''' and adds this to the ProgressValue
    525. ''' </summary>
    526. ''' <param name="Value">As Double - Percent</param>
    527. Public Sub PerformPercentStep(ByVal Value As Double)
    528. Me.BarValue += ((BarValueMaxVal / 100) * Value)
    529. End Sub
    530. #End Region
    531. End Class
    Bilder
    • Bars.JPG

      35,07 kB, 733×184, 189 mal angesehen
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „asusdk“ ()

    Nimm mal die VB.NET tags und nicht die allgemeinen Quellcode Tags. Dann kann man den Code auch gescheit lesen :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @asusdk Wenn Du die Klasse von UserControl ableitest, wird sie Dir im Designer angezeigt und Du kannst son Teil auf die GUI ziehen und im Designer parametrieren.
    Das UserControl von der IDE generieren lassen: Hinzufügen Benutzersteuerelement.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @asusdk Wenn Du die Klasse von UserControl ableitest, wird sie Dir im Designer angezeigt und Du kannst son Teil auf die GUI ziehen und im Designer parametrieren.


    @RodFromGermany Ich versteh die Aussage nicht ganz, es ist bei mir in der UsercontrolListe und wird auch in der Toolbox angezeigt, ich kanns normal auf die Form ziehen und da Einstellen, oder hab ich dich ganz falsch verstanden
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    Ich versteh die Aussage nicht ganz
    OK.
    Poste mal den Code von DKProgress.Designer.vb
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Spoiler anzeigen

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class DKProgress
    3. Inherits System.Windows.Forms.UserControl
    4. 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.components = New System.ComponentModel.Container()
    23. Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
    24. Me.SuspendLayout()
    25. '
    26. 'Timer1
    27. '
    28. Me.Timer1.Enabled = True
    29. Me.Timer1.Interval = 10
    30. '
    31. 'DKProgress
    32. '
    33. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    34. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    35. Me.BackColor = System.Drawing.Color.LightGray
    36. Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
    37. Me.DoubleBuffered = True
    38. Me.ForeColor = System.Drawing.Color.Black
    39. Me.Margin = New System.Windows.Forms.Padding(2)
    40. Me.MinimumSize = New System.Drawing.Size(10, 9)
    41. Me.Name = "DKProgress"
    42. Me.Size = New System.Drawing.Size(152, 24)
    43. Me.ResumeLayout(False)
    44. End Sub
    45. Friend WithEvents Timer1 As System.Windows.Forms.Timer
    46. End Class
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @asusdk Dies hat noch gefehlt:

    VB.NET-Quellcode

    1. Imports System.Drawing.Text
    2. Imports System.Drawing.Drawing2D
    Und eine kleine Bedienungsanleitung wäre auch nicht schlecht.
    Informier Dich mal im Unterforum Sourcecode-Austausch, wie so ne Präsentation aussehen kann und sollte.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Informier Dich mal im Unterforum Sourcecode-Austausch, wie so ne Präsentation aussehen kann und sollte.
    @RodFromGermany
    Klar, sobald ich es veröffentliche klar, mir ging es ja primär um den code, ob ich richtig zeichne, ob die IF´s nicht zu verschachtelt sind oder ob ich dabei generell was besser schreiben könnte, wenn nicht dann wirds gern veröffentlicht
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    also bei nur code gucken im Browser kann man zu sowas komplexen wie ein selbstgebasteltes Control nicht viel sagen.
    Und bei mehr als 50 Zeilen schon garnet.

    Dafür ist eiglich der SourceCode-Austausch wie geschaffen: Da hängste eine compilierbare gezippte Solution rein, mit Bitte um Code-Review, und dann kann man wirklich testen, was du gebastelt hast.

    Aber warm anziehen, weil herumkritteln ist bei Programmierern die "Königsdisziplin" ;)