textbox 相关问题

文本框是一个图形用户界面元素,它允许简单的输入文本,通常只有一行文本。

防止 TextBox 在 WPF 中水平扩展

我在 App.xaml 中定义了以下样式 <Setter Property="VerticalScrollBarVisibility" Value="Auto" /> ...</desc> <question vote="13"> <p>我在 App.xaml 中定义了以下样式</p> <pre><code>&lt;Style x:Key=&#34;textBoxMultiline&#34; TargetType=&#34;{x:Type TextBox}&#34; &gt; &lt;Setter Property=&#34;VerticalScrollBarVisibility&#34; Value=&#34;Auto&#34; /&gt; &lt;Setter Property=&#34;HorizontalScrollBarVisibility&#34; Value=&#34;Hidden&#34; /&gt; &lt;Setter Property=&#34;MinHeight&#34; Value=&#34;50&#34; /&gt; &lt;Setter Property=&#34;TextWrapping&#34; Value=&#34;Wrap&#34; /&gt; &lt;/Style&gt; </code></pre> <p>在整个解决方案中,我们在每个需要简短文本的文本框上使用它。</p> <pre><code>&lt;TextBox x:Name=&#34;textBoxDescription&#34; Grid.Row=&#34;2&#34; Grid.Column=&#34;1&#34; Style=&#34;{DynamicResource textBoxMultiline}&#34; /&gt; </code></pre> <p>一切都很好,但随后客户抱怨某些字段被合并在分辨率较低的旧显示器上,因此我在较高的视觉树节点之一上放置了<pre><code>ScrollViewer</code></pre>以防止合并。</p> <pre><code>&lt;ScrollViewer Height=&#34;Auto&#34; VerticalScrollBarVisibility=&#34;Auto&#34; HorizontalScrollBarVisibility=&#34;Auto&#34;&gt; ... &lt;/ScrollViewer&gt; </code></pre> <p>奇怪的是,具有上述样式的 <pre><code>TextBox</code></pre> 开始向右扩展,而不是环绕文本。</p> <p>有没有办法在不删除<pre><code>ScrollViewer</code></pre>的情况下防止这种情况? </p> </question> <answer tick="false" vote="11"> <p>如果您不想对宽度进行硬编码,那么您可以使用元素绑定父项的宽度。</p> <p>这里我将 TextBox MaxWidth 与 ScrollViewer 实际宽度绑定。您还必须确保 ColumnDefinition 宽度应设置为“*”而不是“Auto”。如果将其设置为“自动”,它将忽略 ScrollViewer 宽度并继续扩展 ScrollViewer 和 TextBox 的宽度。 <em><strong>我认为你属于这种情况</strong></em>...</p> <pre><code>&lt;Grid&gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition Width=&#34;*&#34;&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition Width=&#34;*&#34;&gt;&lt;/ColumnDefinition&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;ScrollViewer HorizontalScrollBarVisibility=&#34;Auto&#34; Name=&#34;scv&#34;&gt; &lt;TextBox Height=&#34;30&#34; TextWrapping=&#34;Wrap&#34; MaxWidth=&#34;{Binding ElementName=scv, Path=ActualWidth}&#34;&gt;&lt;/TextBox&gt; &lt;/ScrollViewer&gt; &lt;/Grid&gt; </code></pre> </answer> <answer tick="true" vote="9"> <p>您必须为<pre><code>MaxWidth</code></pre>定义一个<pre><code>TextBox</code></pre>,否则没有限制,因为<pre><code>ScrollViewer</code></pre>。</p> </answer> <answer tick="false" vote="6"> <p>@bathineni 提供的解决方案帮助我解决了我的问题。这对我有用:</p> <pre><code>&lt;Grid &gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition Width=&#34;50&#34;/&gt; &lt;ColumnDefinition Width=&#34;*&#34;/&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;Button Grid.Column=&#34;0&#34; Width=&#34;30&#34; Height=&#34;23&#34; Margin=&#34;10,5&#34; Content=&#34;...&#34;/&gt; &lt;ScrollViewer Grid.Column=&#34;1&#34; HorizontalScrollBarVisibility=&#34;Disabled&#34; verticalScrollBarVisibility=&#34;Disabled&#34; Name=&#34;scv&#34;&gt; &lt;TextBox Height=&#34;25&#34; Text=&#34;Insert here long text&#34; MaxWidth=&#34;{Binding ElementName=scv, Path=ActualWidth}&#34; HorizontalAlignment=&#34;Stretch&#34; /&gt; &lt;/ScrollViewer&gt; &lt;/Grid&gt; </code></pre> </answer> <answer tick="false" vote="1"> <p>第一个解决方案是使用数据绑定在 XAML 中实现的。我建议你不要单独绑定控件。 XAML 解决方案是通过将具有所需 ActualWidth 和 ActualHeight 属性的控件绑定到文本框 MaxHeight 和 MaxWidth 属性来实现的。</p> <pre><code>&lt;TextBlock x:Name=&#34;PasswordText&#34; Margin=&#34;0,0,0,20&#34; FontFamily=&#34;Bahnschrift SemiBold Condensed&#34; Text=&#34;PASSWORD&#34; FontSize=&#34;20&#34;&gt; &lt;TextBox x:Name=&#34;PasswordTextBox&#34; MaxWidth=&#34;{Binding ElementName=PasswordText, Path=ActualWidth}&#34; MaxHeight=&#34;{Binding ElementName=PasswordText, Path=ActualHeight}&#34;&gt; </code></pre> <p>下一个解决方案是通过在 XAML 中生成 Loaded 事件,在 C# 代码中创建它,然后在 Loaded 事件中将文本框的 MaxWidth 和 MaxHeight 属性设置为文本框 ActualWidth 和 ActualHeight 属性来实现。</p> <pre><code>// It doesn&#39;t have a problem like in XAML if you pass the textbox its own // ActualWidth and ActualHeight to the MaxWidth and MaxHeight proprieties. private void Log_In_Page_Loaded(object sender, RoutedEventArgs e) { UsernameTextBox.MaxHeight = UsernameTextBox.ActualHeight; UsernameTextBox.MaxWidth = UsernameTextBox.ActualWidth; } </code></pre> <p>选择更适合你设计的一个,但我认为,在我看来,这是解决这个问题最有效、最简单、最稳定、最有效的方法。</p> </answer> <answer tick="false" vote="0"> <p>对我有用。如果你想让滚动条出现在文本框中,你可以添加</p> <pre><code>HorizontalScrollBarVisibility=&#34;Auto&#34; VerticalScrollBarVisibility=&#34;Auto&#34; </code></pre> <p>到文本框 </p> </answer> <answer tick="false" vote="0"> <p>您必须设置 <pre><code>MaxWidth</code></pre><pre> 的 </pre><code>Container Control</code></p> <pre><code>&lt;Grid x:Name=&#34;RootGrid&#34; Margin=&#34;6,6,8,8&#34; Width=&#34;500&#34; MaxWidth=&#34;500&#34;&gt; &lt;ScrollViewer ScrollViewer.HorizontalScrollBarVisibility=&#34;Disabled&#34; ScrollViewer.VerticalScrollBarVisibility=&#34;Auto&#34;&gt; &lt;Grid&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition Height=&#34;Auto&#34;/&gt; &lt;/Grid.RowDefinitions&gt; &lt;GroupBox Name=&#34;contentGroup&#34; Header=&#34;Content&#34; Grid.Row=&#34;0&#34;&gt; &lt;TextBox Name=&#34;content&#34;/&gt; &lt;/GroupBox&gt; &lt;/Grid&gt; &lt;/ScrollViewer&gt; </code></pre> <p></p> </answer> <answer tick="false" vote="0"> <p>当我需要我的<pre><code>TextBox</code></pre>在调整大小时与其自动调整大小的<pre><code>Grid</code></pre>列一起拉伸时,我遇到了这个问题,这意味着<pre><code>MaxWidth</code></pre>不起作用,但仍然需要防止<pre><code>TextBox</code></pre>拉伸及其内容。</p> <p>我最终所做的是将这个事件处理程序链接到<pre><code>SizeChanged</code></pre>:</p> <pre><code>private void TextBox_SizeChanged(object sender, SizeChangedEventArgs e) { TextBox textBox = (TextBox)sender; if (textBox.CanUndo &amp;&amp; e.NewSize.Width &gt; e.PreviousSize.Width) { textBox.Width = e.PreviousSize.Width; } } </code></pre> <p>将文本写入文本框是用户可以撤消的操作,而其他可能导致调整大小的操作(元素的初始绘制、父容器的拉伸等)则无法从文本框中撤消。因此,通过检查 <pre><code>CanUndo</code></pre>,我们可以确定 <pre><code>SizeChanged</code></pre> 是否是由写入文本或其他内容触发的。</p> <p><pre><code>e.NewSize.Width &gt; e.PreviousSize.Width</code></pre> 检查是必要的,因为没有它,<pre><code>SizeChanged</code></pre> 事件将从自身内部无限地调用,因为要恢复拉伸,我们需要 <em>将大小</em> 更改回原始值,这本身就会触发事件。</p> <p>这有点棘手,但我还没有遇到任何问题。</p> </answer> <answer tick="false" vote="0"> <p>我不知道为什么,但我无法让 ScrollViewer 解决方案工作。我需要一个具有固定初始宽度的 TextBox 来实现数字向上/向下控件 - 在此控件中,TextBox 独立于输入而缩小和增长,如果 UI 在您键入时发生变化,这看起来非常烦人。</p> <p>所以,我发现以下使用 2 个文本框的解决方案适合我。第一个文本框是为用户键入输入而显示的文本框,第二个文本框通过依赖属性 (DisplayLength) 和下面进一步显示的转换器进行初始化。</p> <p>将第一个文本框的 MaxWidth 属性绑定到第二个文本框的 Width 属性可以固定大小,以便用户可以键入他们想要的内容,但即使有更多可用的 UI 空间,文本框的显示宽度也不会改变。</p> <pre><code>&lt;TextBox x:Name=&#34;PART_TextBox&#34; Text=&#34;{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}&#34; Margin=&#34;0,0,1,0&#34; TextAlignment=&#34;Right&#34; AcceptsReturn=&#34;False&#34; SpellCheck.IsEnabled=&#34;False&#34; HorizontalContentAlignment=&#34;Stretch&#34; VerticalContentAlignment=&#34;Center&#34; HorizontalAlignment=&#34;Stretch&#34; VerticalAlignment=&#34;Stretch&#34; MaxWidth=&#34;{Binding ElementName=TBMeasure, Path=ActualWidth}&#34; /&gt; &lt;!-- Hidden measuring textbox ensures reservation of enough UI space according to DisplayLength dependency property --&gt; &lt;TextBox x:Name=&#34;TBMeasure&#34; Text=&#34;{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DisplayLength, Converter={StaticResource ByteToPlaceHolderStringConverter}}&#34; Margin=&#34;0,0,1,0&#34; TextAlignment=&#34;Right&#34; AcceptsReturn=&#34;False&#34; SpellCheck.IsEnabled=&#34;False&#34; HorizontalContentAlignment=&#34;Right&#34; VerticalContentAlignment=&#34;Center&#34; HorizontalAlignment=&#34;Stretch&#34; VerticalAlignment=&#34;Stretch&#34; Visibility=&#34;Hidden&#34;/&gt; // Converter [ValueConversion(typeof(byte), typeof(string))] public sealed class ByteToPlaceHolderStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if ((value is byte) == false) return Binding.DoNothing; byte byteVal = (byte)value; string retString = string.Empty; for (int i = 0; i &lt; byteVal; i++) retString = retString + &#34;X&#34;; return retString; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return Binding.DoNothing; } } </code></pre> </answer> </body></html>

回答 0 投票 0

WPF TextBox 使用 StringFormat 键入问题

通过 StringFormat='{}{0:F2} 在 WPF 中的 TextBox 中输入 2 位小数格式的值时,有没有办法“绕过”点并“覆盖”小数? 当我输入“...

回答 1 投票 0

DevExtreme:文本框:将蒙版设置为模型属性

是否可以将 devextreme 文本框字段的掩码设置为模型的属性?就像将掩码属性绑定到模型的属性值一样? 例如: 模型: 公共我的班级{ 公共字符串

回答 1 投票 0

使用 javascript 验证人体身高

我需要一个文本框来输入人体身高。我需要使用 jquery 来做到这一点。是否有我可以用来执行验证的插件或代码示例。有人可以帮我验证...

回答 3 投票 0

WPF 自定义文本框大小调整问题

我正在尝试在 WPF 中创建自定义文本框模板。 我的文本框周围有一个 1 像素的边框,这个边框的边距为 8 像素,这都是简单的东西,这里没有问题。 我遇到的问题是...

回答 1 投票 0

WPF TextBox MenuItem 在移动鼠标时失去焦点

在我的 WPF 应用程序中,我希望菜单项有一个文本框。我已经设法使用以下代码来做到这一点: 在我的 WPF 应用程序中,我希望菜单项有一个文本框。我已经设法使用以下代码来做到这一点: <Menu Height="23" HorizontalAlignment="Stretch" Name="MainMenu" VerticalAlignment="Top"> <MenuItem Header="File"> <MenuItem Header="Exit" Click="menuItemExit_Click" /> </MenuItem> <MenuItem Header="Settings"> <MenuItem Header="Some setting" IsCheckable="True" /> <Separator /> <MenuItem> <MenuItem.Header> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Content="Some value:" Margin="0,3,6,0" Padding="0" /> <TextBox Margin="0,0,0,6" Grid.Column="1" /> </Grid> </MenuItem.Header> </MenuItem> </MenuItem> </Menu> 此代码按我的预期显示菜单项,但如果我开始在文本框中输入一些值,然后将鼠标(而不是单击)移离文本框菜单项,则文本框将失去焦点,并且我无法继续输入,直到我再次单击文本框。如何实现与 WinForms 中的文本框菜单项相同的行为?也就是说,只有当用户在文本框外部单击或按 Tab 键时,文本框才会失去焦点。 提前致谢。 正如我所写,我不确定您如何使用菜单控件。 但也许这段代码可以帮助你或给你一个提示: <TextBox Margin="0,0,0,6" Grid.Column="1" PreviewLostKeyboardFocus="OnPreviewLostKeyboardFocus"/> 以及相应的方法: private void OnPreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { if (MainMenu.IsKeyboardFocusWithin) { e.Handled = true; } } 我知道这个答案可能为时已晚,无法帮助您,但也许它会帮助任何寻找此问题解决方案的人。 在菜单项上设置 Focusable=false 也可以。 它仍然允许单击它们并允许它们包含的控件获得焦点。 但是,它禁用了仅使用键盘导航菜单的功能,从而引入了可访问性问题。 可访问性问题可以通过一点创意来解决,方法是为每个菜单项提供一个可聚焦的元素。 例如: <MenuItem Focusable="False"> <MenuItem.Header> <StackPanel Orientation="Horizontal" Focusable="True" FocusVisualStyle="{x:Null}"> <TextBlock Text="Do something!" /> </StackPanel> </MenuItem.Header> </MenuItem> 需要 FocusVisualStyle="{x:Null}" 代码来隐藏否则会出现的虚线焦点(并且在菜单中看起来不合适)。 也许这有帮助: <MenuItem StaysOpenOnClick="True"> <MenuItem.Header> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Content="Some value:" Margin="0,3,6,0" Padding="0" /> <TextBox Margin="0,0,0,6" Grid.Column="1" /> </Grid> </MenuItem.Header> </MenuItem> 自定义 ComboBox 项目也面临同样的问题。在我的例子中,这个问题的根本原因是 ComboBoxItem 事件的 MouseEnter 处理程序: e.Handled = true; this.ParentComboBox?.NotifyComboBoxItemEnter(this); base.OnMouseEnter(e); 而且NotifyComboBoxItemEnter看起来像 if (!this.IsDropDownOpen || Mouse.Captured != this || !this.DidMouseMove()) return; this.HighlightedInfo = this.ItemInfoFromContainer((DependencyObject) item); if (this.IsEditable || item.IsKeyboardFocusWithin) return; item.Focus(); 所以它确实将焦点集中在鼠标输入上。我怀疑菜单项中可能有类似的东西(例如扩展子菜单)。 我通过重写自定义组合框项类上的 OnMouseEnter 来避免调用基本方法解决了这个问题。 接受的解决方案有效,但会阻止键盘导航。

回答 4 投票 0

我们可以在 swiftui 中不使用堆栈的情况下在文本框中添加图像吗?

我正在尝试在不使用 zstack 的情况下将图像添加到 swiftui 中的文本输入中,因为这会导致整个视图出现错误,这是预期的结果,有没有一种方法可以在不使用 u 的情况下添加它们...

回答 1 投票 0

仅允许在输入文本框中输入数字

我有一个数字输入文本框,我想允许用户编辑,但不想允许用户输入除数字之外的任何其他文本。我希望他们只能使用 nu 上的箭头...

回答 4 投票 0

如何强制用户仅从 VB.Net 中的 datagridview 自动完成文本框中选择建议的条目

我试图强制用户仅从 VB.Net 中的 datagridview 自动完成文本框中选择建议的条目 还有一个我希望在 &q...

回答 1 投票 0

在下拉更改选择上启用禁用多个输入

我正在尝试在选择框更改时启用或禁用多个文本框。 这意味着当我在选择框中选择任何选项时,所有字段都应启用。 尝试了下面的 JavaScript 和 Html...

回答 1 投票 0

Javafx eclipse 文本输入在数字或混合时验证,在非数字时拒绝

在JavaFx eclipse应用程序中,在将数据保存到SQL数据库之前,需要验证以下条件:类似数值或混合。但是,如果纯粹是非数字,则拒绝...

回答 1 投票 0

如何更改 pygame gui 文本框的文本颜色

我有这个Python代码,它显示一个屏幕,中间有一个文本框,按下回车键时打印其文本: 导入 pygame_gui,pygame pygame.init() 屏幕 = pygame.display.set_mode((500,5...

回答 1 投票 0

使用“分页”创建动态文本框

基于此处的解决方案:从“无限”动态控件将值输入数据库 我可以在运行时成功创建动态 ASP.NET 控件。所以如果用户输入 10,它会...

回答 1 投票 0

在 JavaFX Eclipse 中验证文本数据输入为数字或混合而不是非数字[重复]

在 JavaFX Eclipse 应用程序中,当用户在文本框中输入数据后按下 Enter 键时,在将输入的值保存到 SQL 数据库之前,需要验证为: 要么纯粹

回答 1 投票 0

在 JavaFX Eclipse 中验证文本数据输入为数字和非数字混合而不是非数字[重复]

需要验证文本框中输入的数据为: 纯数字,例如:1325654 或混合,例如:Wa4433 但不是纯粹的非数字,例如:AbcdE, 如何验证?

回答 1 投票 0

将默认文本添加到诅咒文本框对象

我在应用程序中使用curses python 库,并且还实现了一个文本框https://docs.python.org/3/library/curses.html#textbox-objects。 有没有办法在

回答 1 投票 0

文本框决不能为空。 c#

我不希望我的文本框为空。我希望它保留空之前的值并在删除时写入它。我正在使用 KeyDown 事件,但它不起作用。删除时不触发...

回答 2 投票 0

UserForm TextBox 字体大小问题

首先,我希望这个问题以前没有被问过,我找不到类似的问题。 我在用户窗体中有几个文本框,根据...的数量自动生成

回答 1 投票 0

如何更改 WPF 文本框突出显示文本的前景色?

我正在开发一个同时具有 WinForms 和 WPF 控件的应用程序;在 WinForms TextBox 中选择的文本背景颜色分别为蓝色和白色,而在 WPF TextBox 中则为浅色...

回答 2 投票 0

将文本框分组以在 VBA 中创建数组

我想在装配体中自动保存 SolidWorks 文件。将保存的每个部件的名称是根据用户表单中给出的输入创建的。 用户可以确定金额并...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.