.net System.Windows.Forms DataGridView显示尾随文本而不是前导文本PowerShell

.net System.Windows.Forms DataGridView显示尾随文本而不是前导文本PowerShell,.net,forms,powershell,.net,Forms,Powershell,我试图让DataGridView单元格显示其值的最后一个字符,而不是第一个字符 因此,目标是使单元格显示为 […存储\LANE3\UAT] 而不是: [数据存储\LANE3…] 我正在使用powershell创建表单对象。我想我需要以某种方式钩住DrawText或TextRender函数。。但我不确定我的谷歌Fu是如何让我失望的 (我可以将单元格宽度加宽,但如果可能的话,我希望所有内容的宽度都保持一致)为什么不直接使用字符串,然后使用子字符串来获取要替换的字符数呢。比如说,像这样的 ($Form

我试图让DataGridView单元格显示其值的最后一个字符,而不是第一个字符

因此,目标是使单元格显示为

[…存储\LANE3\UAT]

而不是:

[数据存储\LANE3…]

我正在使用powershell创建表单对象。我想我需要以某种方式钩住DrawText或TextRender函数。。但我不确定我的谷歌Fu是如何让我失望的


(我可以将单元格宽度加宽,但如果可能的话,我希望所有内容的宽度都保持一致)

为什么不直接使用字符串,然后使用子字符串来获取要替换的字符数呢。比如说,像这样的

($FormElementString = '[DataStore\LANE3\LANE3\UAT]')
($ReplaceString     = $FormElementString.Substring(1,4))
($FormElementString -replace "\$ReplaceString", "...")
# Results
<#
[DataStore\LANE3\LANE3\UAT]
Data
[...Store\LANE3\LANE3\UAT]
#>
($FormElementString='[DataStore\LANE3\LANE3\UAT]]
($ReplaceString=$FormElementString.Substring(1,4))
($FormElementString-替换“\$ReplaceString”,“…”)
#结果
根据您的评论进行更新。

我希望在datagridview单元格中保留相同的值,但只是 在system.windows.forms datagridview中以不同方式显示它 反对

如果您确实想要更改特定于单元的视图而不是默认的渲染/截断,那么需要做更多的工作

看这个问答,注意这都是C


为什么不直接使用字符串,然后使用子字符串来获取所需的字符数,然后替换。比如说,像这样的

($FormElementString = '[DataStore\LANE3\LANE3\UAT]')
($ReplaceString     = $FormElementString.Substring(1,4))
($FormElementString -replace "\$ReplaceString", "...")
# Results
<#
[DataStore\LANE3\LANE3\UAT]
Data
[...Store\LANE3\LANE3\UAT]
#>
($FormElementString='[DataStore\LANE3\LANE3\UAT]]
($ReplaceString=$FormElementString.Substring(1,4))
($FormElementString-替换“\$ReplaceString”,“…”)
#结果
根据您的评论进行更新。

我希望在datagridview单元格中保留相同的值,但只是 在system.windows.forms datagridview中以不同方式显示它 反对

如果您确实想要更改特定于单元的视图而不是默认的渲染/截断,那么需要做更多的工作

看这个问答,注意这都是C


您可以使用正则表达式:

$str = '[DataStore\LANE3\LANE3\UAT]' -replace '^(.).*(.{22})$', '$1...$2'
$str
结果:

[...Store\LANE3\LANE3\UAT]
正则表达式详细信息:

^             Assert position at the beginning of the string
(             Match the regex below and capture its match into backreference number 1
   .          Match any single character
)
.             Match any single character
   *          Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(             Match the regex below and capture its match into backreference number 2
   .          Match any single character
      {22}    Exactly 22 times
)
$             Assert position at the end of the string, or before the line break at the end of the string, if any (line feed)

您可以使用正则表达式来执行以下操作:

$str = '[DataStore\LANE3\LANE3\UAT]' -replace '^(.).*(.{22})$', '$1...$2'
$str
结果:

[...Store\LANE3\LANE3\UAT]
正则表达式详细信息:

^             Assert position at the beginning of the string
(             Match the regex below and capture its match into backreference number 1
   .          Match any single character
)
.             Match any single character
   *          Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(             Match the regex below and capture its match into backreference number 2
   .          Match any single character
      {22}    Exactly 22 times
)
$             Assert position at the end of the string, or before the line break at the end of the string, if any (line feed)

谢谢你的回答!我希望在datagridview单元格中保留相同的值,但只是在system.windows.forms datagridview对象中以不同的方式显示它。我现在有点忙。我将实际值放入数组中,并将datagridview单元格设置为具有全文值的数组对象的数组键。不完全是我想做的。。因此,我将看看是否有人可以帮助我找出如何更改datagridview单元格显示(或绘制)其文本内容的方式。不用担心,该值当然在变量中仍然可用(尽管在控件中显示不同)。因此,您仍然可以获取该字符串,但是从变量vs控件调用。谢谢您的回答!我希望在datagridview单元格中保留相同的值,但只是在system.windows.forms datagridview对象中以不同的方式显示它。我现在有点忙。我将实际值放入数组中,并将datagridview单元格设置为具有全文值的数组对象的数组键。不完全是我想做的。。因此,我将看看是否有人可以帮助我找出如何更改datagridview单元格显示(或绘制)其文本内容的方式。不用担心,该值当然在变量中仍然可用(尽管在控件中显示不同)。所以,你仍然可以得到那个字符串,但是从变量对控件调用。这不完全是我需要的,但这非常简洁。我希望datagridview单元格内容保持相同的值,但只是以不同的方式显示(让它以不同的方式绘制单元格文本),以显示尾随内容,而不是前导字符。我见过有人在C#中描述如何使用system.windows.forms datagridview对象实现这一点,但我不确定如何将其转换为powershell函数。这不完全是我所需要的,但非常简洁。我希望datagridview单元格内容保持相同的值,但只是以不同的方式显示(让它以不同的方式绘制单元格文本),以显示尾随内容,而不是前导字符。我见过有人在C#中描述如何使用system.windows.forms datagridview对象实现这一点,但我不确定如何将其转换为powershell函数。