簡體   English   中英

如何在devexpress gridcontrol組件中設置從右到左對齊?

[英]How can set right-to-left align in devexpress gridcontrol component?

我如何在devexpress gridcontrol組件中設置從右到左對齊? (不使用wpf)

像這張照片:

網格控件

在版本15.1中,DevExpress在以下控件中引入了從右向左(RTL)支持:

  • 圖表
  • 網格控件(網格,樹列表,數據透視網格,垂直網格和屬性網格)
  • 數據編輯器和控件(范圍控件,評分控件等)
  • 功能區,菜單和相關控件(BackstageView,AppMenu等)
  • 布局控件和布局容器(TabControl,GroupControl等)
  • 導航控件(導航欄,平鋪控件等)
  • 應用程序UI控件(對接,DocumentManager等)

因此,只需將GridControl.RightToLeft屬性設置為RightToLeft.Yes ,您將獲得RTL布局。

您可以使用ms技巧:

制作新組件並在代碼視圖中添加以下行:

Imports System.ComponentModel
Imports DevExpress.XtraGrid.Localization
Imports System.Windows.Forms
Imports System.Drawing

Public Class MirroredDevExpressGrid
   Private _Mirrored As Boolean
   Const WS_EX_LAYOUTRTL = &H400000

   Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
      Get
         Dim CP As System.Windows.Forms.CreateParams = _
               MyBase.CreateParams
         If Mirrored Then
            CP.ExStyle = CP.ExStyle Or WS_EX_LAYOUTRTL
            MyBase.Refresh()
         End If
         Return CP
      End Get
   End Property

   <Description("Change to the right-to-left layout."), _
  DefaultValue(False), Localizable(True), _
  Category("Appearance"), Browsable(True)> _
   Public Property Mirrored() As Boolean
      Get
         Return _Mirrored
      End Get
      Set(ByVal value As Boolean)
         If _Mirrored <> value Then
            _Mirrored = value
            MyBase.OnRightToLeftChanged(EventArgs.Empty)
         End If
      End Set
   End Property

   Private Sub InitializeComponent()
      Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView
      CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
      CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
      Me.SuspendLayout()
      Me.LookAndFeel.SetSkinStyle("Money Twins")
      Me.LookAndFeel.UseDefaultLookAndFeel = False
      Me.Mirrored = True
      '
      'GridView1
      '
      Me.GridView1.GridControl = Me
      Me.GridView1.Name = "GridView1"
      '
      'MirroredDevExpressGrid
      '
      Me.MainView = Me.GridView1
      Me.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
         CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
      CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
      Me.ResumeLayout(False)

   End Sub


   Private Sub MirroredDevExpressGrid_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseMove

      Invalidate()
   End Sub

End Class

and in designer class:

you can use ms trick:

make new component and in code view add the following lines:

Imports System.ComponentModel
Imports DevExpress.XtraGrid.Localization
Imports System.Windows.Forms
Imports System.Drawing

Public Class MirroredDevExpressGrid
   Private _Mirrored As Boolean
   Const WS_EX_LAYOUTRTL = &H400000

   Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
      Get
         Dim CP As System.Windows.Forms.CreateParams = _
               MyBase.CreateParams
         If Mirrored Then
            CP.ExStyle = CP.ExStyle Or WS_EX_LAYOUTRTL
            MyBase.Refresh()
         End If
         Return CP
      End Get
   End Property

   <Description("Change to the right-to-left layout."), _
  DefaultValue(False), Localizable(True), _
  Category("Appearance"), Browsable(True)> _
   Public Property Mirrored() As Boolean
      Get
         Return _Mirrored
      End Get
      Set(ByVal value As Boolean)
         If _Mirrored <> value Then
            _Mirrored = value
            MyBase.OnRightToLeftChanged(EventArgs.Empty)
         End If
      End Set
   End Property

   Private Sub InitializeComponent()
      Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView
      CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
      CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
      Me.SuspendLayout()
      Me.LookAndFeel.SetSkinStyle("Money Twins")
      Me.LookAndFeel.UseDefaultLookAndFeel = False
      Me.Mirrored = True
      '
      'GridView1
      '
      Me.GridView1.GridControl = Me
      Me.GridView1.Name = "GridView1"
      '
      'MirroredDevExpressGrid
      '
      Me.MainView = Me.GridView1
      Me.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
         CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
      CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
      Me.ResumeLayout(False)

   End Sub


   Private Sub MirroredDevExpressGrid_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseMove

      Invalidate()
   End Sub

End Class

and in designer class:

Partial Class MirroredDevExpressGrid
   Inherits DevExpress.XtraGrid.GridControl

   <System.Diagnostics.DebuggerNonUserCode()> _
 Protected Overrides Sub Dispose(ByVal disposing As Boolean)
      MyBase.Dispose(disposing)
   End Sub
   Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView

End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM