Vb.net RichTextBox中的对正选项

Vb.net RichTextBox中的对正选项,vb.net,winforms,Vb.net,Winforms,我正在开发一个应用程序,我想证明在RichTextbox中输入的文本的合理性,类似于Word文档 我已经浏览了这个链接中的代码 有人在VB代码中有更简单的解决方案吗 谢谢看一看。它与MSDN上的示例类似,但更简单。请查看。它与MSDN上的示例类似,但更简单。请尝试类似的方法 rtbox.SelectionStart=0'rtbox是richtextbox的名称 rtbox.SelectionLength=rtbox.Text.Length rtbox.SelectionAlignment=Te

我正在开发一个应用程序,我想证明在RichTextbox中输入的文本的合理性,类似于Word文档

我已经浏览了这个链接中的代码

有人在VB代码中有更简单的解决方案吗

谢谢

看一看。它与MSDN上的示例类似,但更简单。

请查看。它与MSDN上的示例类似,但更简单。

请尝试类似的方法

rtbox.SelectionStart=0'rtbox是richtextbox的名称
rtbox.SelectionLength=rtbox.Text.Length
rtbox.SelectionAlignment=TextAlignment.Justify

'对于其他文本对齐方式
'rtbox.SelectionAlignment=TextAlignment.Left
'rtbox.SelectionAlignment=TextAlignment.Right
'rtbox.SelectionAlignment=TextAlignment.Center

尝试类似的操作

rtbox.SelectionStart=0'rtbox是richtextbox的名称
rtbox.SelectionLength=rtbox.Text.Length
rtbox.SelectionAlignment=TextAlignment.Justify

'对于其他文本对齐方式
'rtbox.SelectionAlignment=TextAlignment.Left
'rtbox.SelectionAlignment=TextAlignment.Right

'rtbox.SelectionAlignment=TextAlignment.Center

我找到了一个简单的VB代码来实现这一点,它工作得很好。这里是链接

' Constants and structures from richedit.h
Const MAX_TAB_STOPS = 32 ' expanded individually
Const PFA_JUSTIFY = 4 ' Left = 1, Center = 2, Right = 3
Const CBSIZE = 188 ' Size of PARAFORMAT2 structure
Const PFM_ALIGNMENT = &H8

Const WM_USER = &H400
Const EM_DISPLAYBAND = WM_USER + 51
Const EM_FORMATRANGE = WM_USER + 57
Const EM_SETPARAFORMAT = WM_USER + 71
Const EM_SETTARGETDEVICE = WM_USER + 72

<StructLayout(LayoutKind.Sequential)> _
Private Structure PARAFORMAT2
    Public cbSize As Int16 'UINT cbSize;
    Public dwMask As Int32 'DWORD dwMask;
    Public wNumbering As Int16 'WORD  wNumbering;
    Public wEffects As Int16  'WORD  wEffects;
    Public dxStartIndent As Int32  'LONG  dxStartIndent;
    Public dxRightIndent As Int32  'LONG  dxRightIndent;
    Public dxOffset As Int32  'LONG  dxOffset;
    Public wAlignment As Int16  'WORD  wAlignment;
    Public cTabCount As Int16  'SHORT cTabCount;
    Public rgxTabs1 As Int32   'LONG  rgxTabs[MAX_TAB_STOPS];
    Public rgxTabs2 As Int32
    Public rgxTabs3 As Int32
    Public rgxTabs4 As Int32
    Public rgxTabs5 As Int32
    Public rgxTabs6 As Int32
    Public rgxTabs7 As Int32
    Public rgxTabs8 As Int32
    Public rgxTabs9 As Int32
    Public rgxTabs10 As Int32
    Public rgxTabs11 As Int32
    Public rgxTabs12 As Int32
    Public rgxTabs13 As Int32
    Public rgxTabs14 As Int32
    Public rgxTabs15 As Int32
    Public rgxTabs16 As Int32
    Public rgxTabs17 As Int32
    Public rgxTabs18 As Int32
    Public rgxTabs19 As Int32
    Public rgxTabs20 As Int32
    Public rgxTabs21 As Int32
    Public rgxTabs22 As Int32
    Public rgxTabs23 As Int32
    Public rgxTabs24 As Int32
    Public rgxTabs25 As Int32
    Public rgxTabs26 As Int32
    Public rgxTabs27 As Int32
    Public rgxTabs28 As Int32
    Public rgxTabs29 As Int32
    Public rgxTabs30 As Int32
    Public rgxTabs31 As Int32
    Public rgxTabs32 As Int32
    Public dySpaceBefore As Int32 'LONG  dySpaceBefore;
    Public dySpaceAfter As Int32 'LONG  dySpaceAfter;
    Public dyLineSpacing As Int32 'LONG  dyLineSpacing;
    Public sStyle As Int16 'SHORT sStyle;
    Public bLineSpacingRule As Byte 'BYTE  bLineSpacingRule;
    Public bOutlineLevel As Byte 'BYTE  bOutlineLevel;
    Public wShadingWeight As Int16 'WORD  wShadingWeight;
    Public wShadingStyle As Int16 'WORD  wShadingStyle;
    Public wNumberingStart As Int16 'WORD  wNumberingStart;
    Public wNumberingStyle As Int16 'WORD  wNumberingStyle;
    Public wNumberingTab As Int16 'WORD  wNumberingTab;
    Public wBorderSpace As Int16 'WORD  wBorderSpace;
    Public wBorderwidth As Int16 'WORD  wBorderWidth;
    Public wBorders As Int16 'WORD  wBorders;
End Structure

<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                                ByVal msg As Int32, _
                                ByVal wParam As Int32, _
                                ByVal lParam As IntPtr) As Int32
End Function

我也在放置代码,以防我们丢失链接

' Constants and structures from richedit.h
Const MAX_TAB_STOPS = 32 ' expanded individually
Const PFA_JUSTIFY = 4 ' Left = 1, Center = 2, Right = 3
Const CBSIZE = 188 ' Size of PARAFORMAT2 structure
Const PFM_ALIGNMENT = &H8

Const WM_USER = &H400
Const EM_DISPLAYBAND = WM_USER + 51
Const EM_FORMATRANGE = WM_USER + 57
Const EM_SETPARAFORMAT = WM_USER + 71
Const EM_SETTARGETDEVICE = WM_USER + 72

<StructLayout(LayoutKind.Sequential)> _
Private Structure PARAFORMAT2
    Public cbSize As Int16 'UINT cbSize;
    Public dwMask As Int32 'DWORD dwMask;
    Public wNumbering As Int16 'WORD  wNumbering;
    Public wEffects As Int16  'WORD  wEffects;
    Public dxStartIndent As Int32  'LONG  dxStartIndent;
    Public dxRightIndent As Int32  'LONG  dxRightIndent;
    Public dxOffset As Int32  'LONG  dxOffset;
    Public wAlignment As Int16  'WORD  wAlignment;
    Public cTabCount As Int16  'SHORT cTabCount;
    Public rgxTabs1 As Int32   'LONG  rgxTabs[MAX_TAB_STOPS];
    Public rgxTabs2 As Int32
    Public rgxTabs3 As Int32
    Public rgxTabs4 As Int32
    Public rgxTabs5 As Int32
    Public rgxTabs6 As Int32
    Public rgxTabs7 As Int32
    Public rgxTabs8 As Int32
    Public rgxTabs9 As Int32
    Public rgxTabs10 As Int32
    Public rgxTabs11 As Int32
    Public rgxTabs12 As Int32
    Public rgxTabs13 As Int32
    Public rgxTabs14 As Int32
    Public rgxTabs15 As Int32
    Public rgxTabs16 As Int32
    Public rgxTabs17 As Int32
    Public rgxTabs18 As Int32
    Public rgxTabs19 As Int32
    Public rgxTabs20 As Int32
    Public rgxTabs21 As Int32
    Public rgxTabs22 As Int32
    Public rgxTabs23 As Int32
    Public rgxTabs24 As Int32
    Public rgxTabs25 As Int32
    Public rgxTabs26 As Int32
    Public rgxTabs27 As Int32
    Public rgxTabs28 As Int32
    Public rgxTabs29 As Int32
    Public rgxTabs30 As Int32
    Public rgxTabs31 As Int32
    Public rgxTabs32 As Int32
    Public dySpaceBefore As Int32 'LONG  dySpaceBefore;
    Public dySpaceAfter As Int32 'LONG  dySpaceAfter;
    Public dyLineSpacing As Int32 'LONG  dyLineSpacing;
    Public sStyle As Int16 'SHORT sStyle;
    Public bLineSpacingRule As Byte 'BYTE  bLineSpacingRule;
    Public bOutlineLevel As Byte 'BYTE  bOutlineLevel;
    Public wShadingWeight As Int16 'WORD  wShadingWeight;
    Public wShadingStyle As Int16 'WORD  wShadingStyle;
    Public wNumberingStart As Int16 'WORD  wNumberingStart;
    Public wNumberingStyle As Int16 'WORD  wNumberingStyle;
    Public wNumberingTab As Int16 'WORD  wNumberingTab;
    Public wBorderSpace As Int16 'WORD  wBorderSpace;
    Public wBorderwidth As Int16 'WORD  wBorderWidth;
    Public wBorders As Int16 'WORD  wBorders;
End Structure

<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                                ByVal msg As Int32, _
                                ByVal wParam As Int32, _
                                ByVal lParam As IntPtr) As Int32
End Function

我已经找到了一个简单的VB代码来做这件事,它工作得很好。这里是链接

' Constants and structures from richedit.h
Const MAX_TAB_STOPS = 32 ' expanded individually
Const PFA_JUSTIFY = 4 ' Left = 1, Center = 2, Right = 3
Const CBSIZE = 188 ' Size of PARAFORMAT2 structure
Const PFM_ALIGNMENT = &H8

Const WM_USER = &H400
Const EM_DISPLAYBAND = WM_USER + 51
Const EM_FORMATRANGE = WM_USER + 57
Const EM_SETPARAFORMAT = WM_USER + 71
Const EM_SETTARGETDEVICE = WM_USER + 72

<StructLayout(LayoutKind.Sequential)> _
Private Structure PARAFORMAT2
    Public cbSize As Int16 'UINT cbSize;
    Public dwMask As Int32 'DWORD dwMask;
    Public wNumbering As Int16 'WORD  wNumbering;
    Public wEffects As Int16  'WORD  wEffects;
    Public dxStartIndent As Int32  'LONG  dxStartIndent;
    Public dxRightIndent As Int32  'LONG  dxRightIndent;
    Public dxOffset As Int32  'LONG  dxOffset;
    Public wAlignment As Int16  'WORD  wAlignment;
    Public cTabCount As Int16  'SHORT cTabCount;
    Public rgxTabs1 As Int32   'LONG  rgxTabs[MAX_TAB_STOPS];
    Public rgxTabs2 As Int32
    Public rgxTabs3 As Int32
    Public rgxTabs4 As Int32
    Public rgxTabs5 As Int32
    Public rgxTabs6 As Int32
    Public rgxTabs7 As Int32
    Public rgxTabs8 As Int32
    Public rgxTabs9 As Int32
    Public rgxTabs10 As Int32
    Public rgxTabs11 As Int32
    Public rgxTabs12 As Int32
    Public rgxTabs13 As Int32
    Public rgxTabs14 As Int32
    Public rgxTabs15 As Int32
    Public rgxTabs16 As Int32
    Public rgxTabs17 As Int32
    Public rgxTabs18 As Int32
    Public rgxTabs19 As Int32
    Public rgxTabs20 As Int32
    Public rgxTabs21 As Int32
    Public rgxTabs22 As Int32
    Public rgxTabs23 As Int32
    Public rgxTabs24 As Int32
    Public rgxTabs25 As Int32
    Public rgxTabs26 As Int32
    Public rgxTabs27 As Int32
    Public rgxTabs28 As Int32
    Public rgxTabs29 As Int32
    Public rgxTabs30 As Int32
    Public rgxTabs31 As Int32
    Public rgxTabs32 As Int32
    Public dySpaceBefore As Int32 'LONG  dySpaceBefore;
    Public dySpaceAfter As Int32 'LONG  dySpaceAfter;
    Public dyLineSpacing As Int32 'LONG  dyLineSpacing;
    Public sStyle As Int16 'SHORT sStyle;
    Public bLineSpacingRule As Byte 'BYTE  bLineSpacingRule;
    Public bOutlineLevel As Byte 'BYTE  bOutlineLevel;
    Public wShadingWeight As Int16 'WORD  wShadingWeight;
    Public wShadingStyle As Int16 'WORD  wShadingStyle;
    Public wNumberingStart As Int16 'WORD  wNumberingStart;
    Public wNumberingStyle As Int16 'WORD  wNumberingStyle;
    Public wNumberingTab As Int16 'WORD  wNumberingTab;
    Public wBorderSpace As Int16 'WORD  wBorderSpace;
    Public wBorderwidth As Int16 'WORD  wBorderWidth;
    Public wBorders As Int16 'WORD  wBorders;
End Structure

<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                                ByVal msg As Int32, _
                                ByVal wParam As Int32, _
                                ByVal lParam As IntPtr) As Int32
End Function

我也在放置代码,以防我们丢失链接

' Constants and structures from richedit.h
Const MAX_TAB_STOPS = 32 ' expanded individually
Const PFA_JUSTIFY = 4 ' Left = 1, Center = 2, Right = 3
Const CBSIZE = 188 ' Size of PARAFORMAT2 structure
Const PFM_ALIGNMENT = &H8

Const WM_USER = &H400
Const EM_DISPLAYBAND = WM_USER + 51
Const EM_FORMATRANGE = WM_USER + 57
Const EM_SETPARAFORMAT = WM_USER + 71
Const EM_SETTARGETDEVICE = WM_USER + 72

<StructLayout(LayoutKind.Sequential)> _
Private Structure PARAFORMAT2
    Public cbSize As Int16 'UINT cbSize;
    Public dwMask As Int32 'DWORD dwMask;
    Public wNumbering As Int16 'WORD  wNumbering;
    Public wEffects As Int16  'WORD  wEffects;
    Public dxStartIndent As Int32  'LONG  dxStartIndent;
    Public dxRightIndent As Int32  'LONG  dxRightIndent;
    Public dxOffset As Int32  'LONG  dxOffset;
    Public wAlignment As Int16  'WORD  wAlignment;
    Public cTabCount As Int16  'SHORT cTabCount;
    Public rgxTabs1 As Int32   'LONG  rgxTabs[MAX_TAB_STOPS];
    Public rgxTabs2 As Int32
    Public rgxTabs3 As Int32
    Public rgxTabs4 As Int32
    Public rgxTabs5 As Int32
    Public rgxTabs6 As Int32
    Public rgxTabs7 As Int32
    Public rgxTabs8 As Int32
    Public rgxTabs9 As Int32
    Public rgxTabs10 As Int32
    Public rgxTabs11 As Int32
    Public rgxTabs12 As Int32
    Public rgxTabs13 As Int32
    Public rgxTabs14 As Int32
    Public rgxTabs15 As Int32
    Public rgxTabs16 As Int32
    Public rgxTabs17 As Int32
    Public rgxTabs18 As Int32
    Public rgxTabs19 As Int32
    Public rgxTabs20 As Int32
    Public rgxTabs21 As Int32
    Public rgxTabs22 As Int32
    Public rgxTabs23 As Int32
    Public rgxTabs24 As Int32
    Public rgxTabs25 As Int32
    Public rgxTabs26 As Int32
    Public rgxTabs27 As Int32
    Public rgxTabs28 As Int32
    Public rgxTabs29 As Int32
    Public rgxTabs30 As Int32
    Public rgxTabs31 As Int32
    Public rgxTabs32 As Int32
    Public dySpaceBefore As Int32 'LONG  dySpaceBefore;
    Public dySpaceAfter As Int32 'LONG  dySpaceAfter;
    Public dyLineSpacing As Int32 'LONG  dyLineSpacing;
    Public sStyle As Int16 'SHORT sStyle;
    Public bLineSpacingRule As Byte 'BYTE  bLineSpacingRule;
    Public bOutlineLevel As Byte 'BYTE  bOutlineLevel;
    Public wShadingWeight As Int16 'WORD  wShadingWeight;
    Public wShadingStyle As Int16 'WORD  wShadingStyle;
    Public wNumberingStart As Int16 'WORD  wNumberingStart;
    Public wNumberingStyle As Int16 'WORD  wNumberingStyle;
    Public wNumberingTab As Int16 'WORD  wNumberingTab;
    Public wBorderSpace As Int16 'WORD  wBorderSpace;
    Public wBorderwidth As Int16 'WORD  wBorderWidth;
    Public wBorders As Int16 'WORD  wBorders;
End Structure

<DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                                ByVal msg As Int32, _
                                ByVal wParam As Int32, _
                                ByVal lParam As IntPtr) As Int32
End Function

解决方案对我不起作用,除非我补充:

SendMessage(Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY)
完整代码:

 Private Const EM_SETTYPOGRAPHYOPTIONS As Long = WM_USER + 202
 Private Const TO_ADVANCEDTYPOGRAPHY As Long = 1

 Private sub SetAlignJustify()
    Dim Para As New Paraformat2
    With Para
       .cbSize = CUInt(Marshal.SizeOf(Para))
       .dwMask = PFM_ALIGNMENT
       .wAlignment = value
    End With

    SendMessage(Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY)


    Dim lpar As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(Para))
    Marshal.StructureToPtr(Para, lpar, False)
    Dim result As Integer = SendMessage(Handle, EM_SETPARAFORMAT, 0, lpar)
    Marshal.FreeCoTaskMem(lpar)
End Sub

解决方案对我不起作用,除非我补充:

SendMessage(Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY)
完整代码:

 Private Const EM_SETTYPOGRAPHYOPTIONS As Long = WM_USER + 202
 Private Const TO_ADVANCEDTYPOGRAPHY As Long = 1

 Private sub SetAlignJustify()
    Dim Para As New Paraformat2
    With Para
       .cbSize = CUInt(Marshal.SizeOf(Para))
       .dwMask = PFM_ALIGNMENT
       .wAlignment = value
    End With

    SendMessage(Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY)


    Dim lpar As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(Para))
    Marshal.StructureToPtr(Para, lpar, False)
    Dim result As Integer = SendMessage(Handle, EM_SETPARAFORMAT, 0, lpar)
    Marshal.FreeCoTaskMem(lpar)
End Sub

我在VB中找到了一个简单的代码,它对我来说很好用,下面是一个链接,我会在稍后发布一个单独的答案和代码。我在VB中找到了一个简单的代码,它对我来说很好用,下面是一个链接,我会在稍后发布一个单独的答案和代码。WinForms RichTextBox只有中心的HorizontalAlignment枚举,左侧和右侧可用于SelectionalIgment属性。WinForms RichTextBox仅具有中心的水平对齐枚举,左侧和右侧可用于SelectionalIgment属性。这对我很有用。但是当我更改zoomfactor时,righmargin被忽略。我怎样才能避免这种情况?这对我很有效。但是当我更改zoomfactor时,righmargin被忽略。我怎样才能避免这种情况?