2015-01-21 2 views
1

Надеюсь, вы все прекрасно и преуспеваете. Я столкнулся с одной проблемой в списке. У меня есть некоторые заголовки listview, которые появляются плоскими, а не в соответствии с темой Windows 7. Не забудьте увидеть прикрепленные изображения. enter image description hereListView Header apperance flat

+0

Это не похоже, что визуальные стили включены. Это C# или VB? – Plutonix

+0

Его на VB. И это не так похоже на одну форму. Это проявляется во всех формах. – user3326837

+0

хорошо, потому что 'EnableVisualStyles' является членом' Application', поэтому он * будет * воздействовать на все формы. Начинается ли ваше приложение с главной формы или Sub Main? – Plutonix

ответ

0

С вашего приложения с Sub Main вы не используете VB «Application Framework», который автоматически включает визуальные стили. Это легко исправить:

Public Sub Main() 
    ' use this before any WinForms elements are 
    ' created or referenced! 
    Application.EnableVisualStyles()  ' to add 

    '... your other code 

    Application.Run(New MainForm)   ' start up form 

End Sub 
+0

Большое вам спасибо. В вашем ответе @plutonix есть небольшая модификация. Мы также должны называть Appliceition.DoEvents(). – user3326837

+0

Большинство моих приложений начинаются с Sub Main, и мне никогда не придется использовать DoEvents (когда-либо). В вашем случае может быть что-то еще, что кажется необходимым. 'DoEvents' почти никогда не бывает хорошей идеей ... но рад, что это сработало! – Plutonix

+0

Да, может быть, потому что я также использую элементы управления devexpress. – user3326837

0

Почему ответы на эти вопросы всегда связаны с Application.Run()? Это не нужно. Также нет DoEvents. Ниже приведена основа для практического применения форм, начиная с Sub Main(). Он включает запрограммированную пользователем форму, которая показана и показана, и использование объекта пакета для отправки ответа из указанной формы обратно в вызывающую подпрограмму после закрытия формы.

Option Strict 

Public Module EntryPoint 
    Public Sub Main() 

     'Optional, if you want the Vista/Windows7 theme on your controls 
     Application.EnableVisualStyles() 

     'Show a form 
     dim response As New MyCustomPack 
     Using form As New MyCustomForm(response) 
      form.ShowDialog() 
     End Using 

     'Do something with the response 
     System.Windows.Forms.MessageBox.Show(String.Format("The response is {0}", response.Value)) 

     'The program now ends 
    End Sub 
End Module 

Public Class MyCustomForm 
    Inherits System.Windows.Forms.Form 

    Private WithEvents _CtrBtnChoice1 As System.Windows.Forms.Button = Nothing 
    Private WithEvents _CtrBtnChoice2 As System.Windows.Forms.Button = Nothing 
    Private _Response As MyCustomPack = Nothing 

    Public Sub New(ByRef Out_Response As MyCustomPack) 
     _Response = Out_Response 
    End Sub 

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

     'Setup form controls here 
     _CtrBtnChoice1 = New System.Windows.Forms.Button 
     _CtrBtnChoice2 = New System.Windows.Forms.Button 
     With _CtrBtnChoice1 
      'Set button size, location, text, etc 
     End With 
     With _CtrBtnChoice2 
      'Set button size, location, text, etc 
     End With 
    End Sub 

    Private Sub _CtrBtnChoice1_Click(sender As Object, e As System.EventArgs) Handles _CtrBtnChoice1.Click 
     _Response.Value = 11111 
     Me.Close() 
    End Sub 

    Private Sub _CtrBtnChoice2_Click(sender As Object, e As System.EventArgs) Handles _CtrBtnChoice2.Click 
     _Response.Value = 22222 
     Me.Close() 
    End Sub 
End Class 

Public Class MyCustomPack 
    Public Value As Integer 
End Class 
Смежные вопросы