我正在写一个习惯TextBox,一旦获得焦点改变其边框风格.
由于添加边框会导致控件与相邻的控件重叠,因此我暂时将文本框置于对话框的前面(使用textBox.BringToFront()).
但是,一旦编辑完成并且焦点丢失,我想将控件发送回Z顺序中的原始位置.
这是可能的(最好以简单的方式!)
我见过以下与我的问题有关的帖子:
以上内容涉及更改内容模板ComboBox.我正在使用WPF,我对样式和模板有点新,我想将禁用的暗灰色背景颜色更改为TextBox其他颜色.我们TextBoxes经常在我们的应用程序中使用,并且我们发现难以阅读的默认颜色设置.
我已经制定了以下解决方案尝试.但是,当然,它不起作用.有人可以给我一个意见吗?

我搜索了这个问题,人们已经回答了类似的问题,但由于某种原因,我无法得到任何工作.我一定在这里遗漏了一些东西......无论如何,当我运行以下代码时,永远不会调用TextBox_DragEnter处理程序.但是,如果我将xaml中的TextBox元素更改为TextBlock元素,则会调用它.有没有办法从TextBox元素获得相同的行为?以下代码完全隔离了问题......
MainWindow.xaml:
<Window x:Class="Wpf1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="myGrid">
<TextBox AllowDrop="True" PreviewDragEnter="TextBox_DragEnter" PreviewDrop="TextBox_Drop" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Collections.ObjectModel;
namespace Wpf1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBox_DragEnter(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Copy;
}
private void TextBox_Drop(object sender, DragEventArgs e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
安德鲁
编辑:
为了澄清,我想允许将自定义对象放入文本框中.在文本框的Drop处理程序中,我想将文本框的文本设置为对象中的属性,然后将TextBox的IsReadOnly属性设置为false.我只是在为TextBox拖放时遇到一些麻烦......
在Forms应用程序中,我正在显示生成大量输出的长时间运行的命令行应用程序的日志输出.我在后台启动程序,捕获其输出,并使用AppendText将其显示在TextBox中.我更喜欢只显示例如最后1000行.从TextBox中删除行是很昂贵的,而TextBox实际上并不是滚动日志显示的最佳方法.
关于在Windows窗体中执行滚动日志窗口的最佳控件的任何想法?
我有一个Winforms对话框,其中包含一个允许单行输入的TextBox.我想允许用户能够按Ctrl-Backspace删除整个单词.这不是开箱即用的TextBox的默认行为; 我得到一个矩形字符,而不是删除单词.
我已确认该ShortcutsEnabled物业已设定为True.
我确实发现我可以使用RichTextBox而不是TextBox来获取我想要的行为.这个问题是RichTextBox的外观(特别是边框)与TextBox的外观不同,我不需要或不想要标记文本的能力.
所以我的问题是如何最好地处理这种情况?我错过了TextBox上的一些属性吗?或者最好使用RichTextBox,更新外观以使其一致,并禁用文本的标记?
如果没有更好的方法,我很乐意编写处理KeyDown和KeyPress事件明确的代码,但认为值得先检查一下.
我想捕获鼠标点击TextBox:
<Window x:Class="WpfApplication2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<TextBox x:Name="t" MouseDown="TextBox_MouseDown"
MouseLeftButtonDown="TextBox_MouseLeftButtonDown"
MouseLeftButtonUp="TextBox_MouseLeftButtonUp"
Height="50" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
现在我只在用户第一次进入时收到鼠标点击事件TextBox.在此TextBox键盘焦点之后,我不再接收鼠标点击事件.知道如何让这个工作吗?
我正在尝试使我的水平布局充分利用可用的空间.
在显示活动的信息中,我有一个"事实框",后面跟着一大盒文字.我希望信息框可以向右浮动,类似于下图.
这可能使用android TextView api吗?

我有一个ASP.NET TextBox,我希望它是ReadOnly.(用户使用其他控件修改它)
但是当有a时PostBack(),文本会重置为空字符串.
我理解,如果你将ReadOnly属性设置True为TextBox它的内容,则不会通过它保存PostBack().
有没有办法在用户之后保留内容PostBack()并使其TextBox不可编辑?
我试图将Enabled属性设置为False,但仍然内容不保存PostBack().
我有一个StackPanel在我的WinRT C#Metro应用程序中,我想用作标签/值对的容器(TextBlock和TextBox),如下所示:
<StackPanel Orientation="Horizontal" Width="400">
<TextBlock Text="Label" Width="150" />
<TextBox Text="Value" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
现在我想要的是让TextBox自动填充StackPanel的剩余水平空间.这有可能吗?HorizontalAlignment/ HorizontalContentAlignment不工作.
我知道另一种方法是为此定义一个Grid.问题是我有几次构造,并希望在Style定义中使用它.我不想用行和列x次定义Grid的定义...
也许替代方案是定义一个自定义用户控件,但我希望有一个简单的可能性TextBox来扩展.
我想通过按下来执行我的搜索按钮后面的代码Enter.我有一个Accept Button属性到我的搜索按钮.但是,当我将我的按钮设置为不可见时,我的搜索不会执行.
我希望能够Enter在我的文本框内按下并执行我的按钮,而不可见.任何建议都会很棒!下面是我在KeyDown事件中的代码的一次尝试
if (e.KeyCode == Keys.Enter)
{
buttonSearch_Click((object)sender, (EventArgs)e);
}
Run Code Online (Sandbox Code Playgroud)