所以我在PowerShell中构建表单相当新;我已经尝试过Saipen PowerShell Studio而且无法继续使用它所以我坚持ICE并且自己做了所有繁重的工作 - 当我遇到一些事情时这可能是一种痛苦我&# 39;从未见过。
在这种情况下,我有一个RichTextBox,我想自动滚动。我已经在互联网上看到了ScrollToCaret用于C#,而Saipen论坛建议使用它,但在这两种情况下都没有提供完整的PS代码,所以我不知道在哪里放它。无论我在哪里尝试过,我都无法到达任何地方。
任何帮助都会非常感激。我还会就我是否有效地做事情提出一般建议。是的,我知道GUI很难看,只是因为它缺少了与这个问题无关的所有东西。
# Adds .NET assemby's and turns on visual themes in standard PowerShell.
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
Function OpenFileDialog {
[System.Reflection.Assembly]::LoadWithPartialName( "System.Windows.Forms" ) | Out-Null
$OBJFORM = New-Object System.Windows.Forms.OpenFileDialog
$OBJFORM.Filter = "Text files (*.txt)|*.txt"
$TXTIMPORT = $OBJFORM.ShowDialog()
IF ( $TXTIMPORT -eq "OK" )
{ Return $OBJFORM.FileName } }
Function WriteFile {
$LINES = gc $TAB1IMPORT
$TAB1TEXT.AppendText( "`nGet-Content $TAB1IMPORT" )
foreach ( $LINE in $LINES )
{ $TAB1TEXT.AppendText( "`n$LINE" )
Sleep 1 } }
# Creates the parent form and controls
$SDC = New-Object System.Windows.Forms.Form
$SDC.Location = New-Object System.Drawing.Size( 270,175 )
$SDC.Size = New-Object System.Drawing.Size( 900,600 )
$SDC.StartPosition = "CenterScreen"
$SDC.BackColor = "Lavender"
$SDC.Font = "Calibri, 8.5"
$SDC.FormBorderStyle = "Fixed3D"
$TABC = New-Object System.Windows.Forms.TabControl
$TABC.Location = New-Object System.Drawing.Size( 140,20 )
$TABC.Size = New-Object System.Drawing.Size( 720,520 )
$TABC.SizeMode = "Fixed"
$SDC.Controls.Add( $TABC )
# Tab controls
$TAB1 = New-Object System.Windows.Forms.TabPage
$TAB1.Location = New-Object System.Drawing.Size( 20,20 )
$TAB1.Size = New-Object System.Drawing.Size( 100,100 )
$TAB1.Text = "Migrate Users"
$TABC.Controls.Add( $TAB1 )
#Tab open file button
$TAB1BUTTON = New-Object System.Windows.Forms.Button
$TAB1BUTTON.Location = New-Object System.Drawing.Size( 50,270 )
$TAB1BUTTON.Size = New-Object System.Drawing.Size( 80,20 )
$TAB1BUTTON.Text = "File Import"
$TAB1.Controls.Add( $TAB1BUTTON )
$TAB1BUTTON.Add_Click( { $TAB1IMPORT = OpenFileDialog
$TAB1TEXT.Text = $TAB1TEXT.Text.Clear
$TAB1TEXT.AppendText( "PS H:\>$TAB1IMPORT" )
WriteFile } )
#Tab 1 Text Box
$TAB1TEXT = New-Object System.Windows.Forms.RichTextBox
$TAB1TEXT.Location = New-Object System.Drawing.Size( 50,300 )
$TAB1TEXT.Size = New-Object System.Drawing.Size( 615,180 )
$TAB1TEXT.Font = New-Object System.Drawing.Font( "Consolas",10,[System.Drawing.FontStyle]::Bold )
$TAB1TEXT.BackColor = "Black"
$TAB1TEXT.ForeColor = "White"
$TAB1TEXT.Multiline = $TRUE
$TAB1TEXT.Text = "PS H:\>"
$TAB1TEXT.BorderStyle = "FixedSingle"
$TAB1.Controls.add( $TAB1TEXT )
$SDC.Add_Shown( { $SDC.Activate() } )
$SDC.ShowDialog()
答案 0 :(得分:2)
使用ScrollToCaret
功能
WriteFile
方法
Function WriteFile {
$LINES = gc $TAB1IMPORT
$TAB1TEXT.AppendText( "`nGet-Content $TAB1IMPORT" )
foreach ( $LINE in $LINES )
{ $TAB1TEXT.AppendText( "`n$LINE" )
$TAB1TEXT.ScrollToCaret() # here
Sleep 1 } }
编辑 - 我已多次遇到提供c#
解决方案但没有PowerShell语法的情况。你是如此接近这个...我通过使用tab-complete来解决问题。
更好的方法是让用户Get-Member
查看对象上可用的方法。这会列出ScrollToCaret
并为您提供方法定义:
void ...
- 不会返回任何内容...()
- 空括号因此不带参数 $TAB1TEXT | Get-Member
c#在Powershell中 - helpful link
调用静态方法
[Class]::StaticMethod(args)
调用实例方法
$object.InstanceMethod(args)
获取财产
$object.Property