标签: textbox

WPF TextBox在Window窗体中的ElementHost中不接受输入

我们正在开发WPF中的UI控件,以便在现有的Windows Forms/MFC应用程序引擎(Rhino 3D)中使用.

应用程序引擎公开了创建"Dockbar"的能力,它实际上允许您将Windows窗体控件放在可以停靠到Engines接口的子窗口中.

我试图将一个简单的WPF TextBox放在一个ElementHost控件中,该控件被添加到Dockbar中.乍一看似乎工作得很好; 但在尝试输入TextBox后,只有某些序列实际显示在TextBox中.该DELETE,BACKSPACE,COPY,PASTE,并选择文本的工作.如果您键入AZ,1-9等,则这些键不会显示.

我有SCOURED网,并听说过,ElementHost.EnableModelessKeyboardInterop()但这仅适用于从表单创建的WPF Windows.我只创建WPF UserControls并在ElementHost控件中托管它们.

我看到一篇关于Dispatcher.Run()的帖子,它有点工作但是打破了表单的其余部分:

System.Windows.Threading.Dispatcher.Run();
Run Code Online (Sandbox Code Playgroud)

PreviewKeyUp,PreviewKeyDown,KEYUP的KeyDown事件的所有火上的文本框,但很可惜没有文字在文本框中显示出来.

我对Windows消息了解不多,但是使用WinSpector我注意到没有WM_GETTEXT消息来自TextBox(如果它们甚至应该是我不知道的话).

我还创建了一个新的Windows窗体项目,并在那里做了同样的事情,它工作正常,所以它必须是如何在Rhino 3D引擎中创建和停靠窗口的问题.

以下是不起作用的示例代码:

ElementHost el = new ElementHost();
System.Windows.Controls.TextBox t = new System.Windows.Controls.TextBox();
t.Width = 100;
t.Text = "TEST";
el.Child = t;
panel1.Controls.Add(el);
Run Code Online (Sandbox Code Playgroud)

wpf interop textbox elementhost

20
推荐指数
4
解决办法
1万
查看次数

创建仅接受数字的WPF TextBox

我想创建一个只接受特定范围内的数值的TextBox.实现此类TextBox的最佳方法是什么?

我想到了派生TextBox并覆盖TextProperty的验证和强制.但是,我不知道如何做到这一点,我知道通常不建议派生WPF控件.


编辑:
我需要的是一个非常基本的文本框,过滤掉所有不是数字的按键.实现它的最简单方法是处理TextBox.PreviewTextInput事件:

private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    int result;
    if (!validateStringAsNumber(e.Text,out result,false))
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

(validateStringAsNumber是我主要使用Int.TryParse的函数)

一些建议的解决方案可能更好,但对于我需要的简单功能,这个解决方案是最容易和最快的,同时足以满足我的需求.

c# wpf textbox

20
推荐指数
2
解决办法
7万
查看次数

如何使WPF TextBox使用密码字符?

我需要动态地设置它..

我可以将密码框设置为正常文本 - 我的意思是 - 用户可以看到他输入的内容.

它的for->我需要使用相同的控制"密码sesion"和"项目计数输入"会话.. ??

vb.net passwords wpf textbox winforms

20
推荐指数
3
解决办法
5万
查看次数

可以在Winforms TextBox上设置背景图像吗?

是否可以TextBox在C#中更改Windows窗体的背景图像?没有BackgroundImage财产.我应该Paint以某种方式覆盖该方法吗?

c# textbox background-image winforms

20
推荐指数
1
解决办法
2万
查看次数

WinForms:是否存在将标签与文本框相关联的概念?

我正在使用Visual Studio 2010和C#.在Windows窗体开发中是否存在以某种方式将标签链接到文本框的概念?什么东西让他们作为一个整体一起移动?在ASP.NET世界中,有标签控件的AssociatedControlId属性.我还认为我记得MS Access表单设计者有一些方法可以将标签与控件相关联(或链接).此功能是否甚至存在于Visual Studio世界中?

如果没有,如何使用控件对标签进行分组,以便在移动文本框时也不必手动移动标签?

c# label textbox visual-studio winforms

20
推荐指数
2
解决办法
3万
查看次数

如何清除表单中所有textBox的文本?

private void CleanForm()
{
    foreach (var c in this.Controls)
    {
        if (c is TextBox)
        {
            ((TextBox)c).Text = String.Empty;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上述方法不起作用,并且不清除控件.编译很好,但什么都不做.

有任何想法吗?

c# textbox winforms

20
推荐指数
3
解决办法
11万
查看次数

检查TextBox是否为空并返回MessageBox?

我做了这个语句来检查TextBox是否为空,但MessageBox总是显示TextBox是否为空.

    private void NextButton_Click(object sender, EventArgs e)
    {
        decimal MarkPoints, x, y;
        x = HoursNumericUpDown.Value;
        y = MarkNumericUpDown.Value;
        MarkPoints = x * y;

        //decimal MarkPoints = (decimal)HoursNumericUpDown.Value * (decimal)HoursNumericUpDown.Value;


        DataGridViewRow dgvRow = new DataGridViewRow();
        DataGridViewTextBoxCell dgvCell =  new DataGridViewTextBoxCell();

        dgvCell = new DataGridViewTextBoxCell();
        dgvCell.Value = MaterialTextBox.Text;
        dgvRow.Cells.Add(dgvCell);

        dgvCell = new DataGridViewTextBoxCell();
        dgvCell.Value = HoursNumericUpDown.Value;
        dgvRow.Cells.Add(dgvCell);

        dgvCell = new DataGridViewTextBoxCell();
        dgvCell.Value = MarkNumericUpDown.Value;
        dgvRow.Cells.Add(dgvCell);

        dgvCell = new DataGridViewTextBoxCell();
        dgvCell.Value = MarkPoints;
        dgvRow.Cells.Add(dgvCell);

        dataGridView1.Rows.Add(dgvRow);

        MaterialTextBox.Clear();
        HoursNumericUpDown.Value = HoursNumericUpDown.Minimum;
        MarkNumericUpDown.Value = MarkNumericUpDown.Minimum;

        if …
Run Code Online (Sandbox Code Playgroud)

c# textbox winforms

20
推荐指数
3
解决办法
24万
查看次数

如何在Windows文本框中将字符串转换为大写?

我的Windows应用程序中有一个文本框.它只允许使用字母和数字.我希望当我键入任何字母时,它应该转换为大写.我怎么能这样做以及在哪种情况下?我已经使用了str.ToUpper()但是光标正在转移到字符串的开头.请给我解决方案.

c# textbox winforms uppercase

20
推荐指数
3
解决办法
5万
查看次数

c#设置TextBox的FontSize

如何在c#中设置TextBox的字体大小.我可以获得当前大小,但不允许设置它.

public static Form client;
((TextBox)client.Controls[0]).Font.size = 16;
Run Code Online (Sandbox Code Playgroud)

c# textbox font-size

20
推荐指数
1
解决办法
7万
查看次数

在文本框条目上显示工具提示

我有一个textbox需要以某种方式输入数据.我已经实现了一些单元格验证技术来检查输入后的数据,但我想在输入数据之前向用户提供一些信息.

为此,我想将添加tooltiptextbox当用户进入工具箱弹出,然后当他们开始键入退出.

例如,我有以下代码:

private void YearEdit_Enter(object sender, EventArgs e)
  {
        ToolTip tt = new ToolTip();
        tt.IsBalloon = true;
        tt.InitialDelay = 0;
        tt.ShowAlways = true;
        tt.SetToolTip(YearEdit, "Enter 4 digit year.");
    }
Run Code Online (Sandbox Code Playgroud)

这在用户输入时执行textbox,但是tooltip只有当鼠标悬停在用户上时才会出现textbox.有没有人有任何想法解决这个问题?我认为也许tt.ShowAlways = true可行,但显然不行.

.net c# textbox tooltip

19
推荐指数
1
解决办法
7万
查看次数