我们正在开发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) 我想创建一个只接受特定范围内的数值的TextBox.实现此类TextBox的最佳方法是什么?
我想到了派生TextBox并覆盖TextProperty的验证和强制.但是,我不知道如何做到这一点,我知道通常不建议派生WPF控件.
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的函数)
一些建议的解决方案可能更好,但对于我需要的简单功能,这个解决方案是最容易和最快的,同时足以满足我的需求.
我需要动态地设置它..
我可以将密码框设置为正常文本 - 我的意思是 - 用户可以看到他输入的内容.
它的for->我需要使用相同的控制"密码sesion"和"项目计数输入"会话.. ??
是否可以TextBox在C#中更改Windows窗体的背景图像?没有BackgroundImage财产.我应该Paint以某种方式覆盖该方法吗?
我正在使用Visual Studio 2010和C#.在Windows窗体开发中是否存在以某种方式将标签链接到文本框的概念?什么东西让他们作为一个整体一起移动?在ASP.NET世界中,有标签控件的AssociatedControlId属性.我还认为我记得MS Access表单设计者有一些方法可以将标签与控件相关联(或链接).此功能是否甚至存在于Visual Studio世界中?
如果没有,如何使用控件对标签进行分组,以便在移动文本框时也不必手动移动标签?
private void CleanForm()
{
foreach (var c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = String.Empty;
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述方法不起作用,并且不清除控件.编译很好,但什么都不做.
有任何想法吗?
我做了这个语句来检查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) 我的Windows应用程序中有一个文本框.它只允许使用字母和数字.我希望当我键入任何字母时,它应该转换为大写.我怎么能这样做以及在哪种情况下?我已经使用了str.ToUpper()但是光标正在转移到字符串的开头.请给我解决方案.
如何在c#中设置TextBox的字体大小.我可以获得当前大小,但不允许设置它.
public static Form client;
((TextBox)client.Controls[0]).Font.size = 16;
Run Code Online (Sandbox Code Playgroud) 我有一个textbox需要以某种方式输入数据.我已经实现了一些单元格验证技术来检查输入后的数据,但我想在输入数据之前向用户提供一些信息.
为此,我想将添加tooltip到textbox当用户进入工具箱弹出,然后当他们开始键入退出.
例如,我有以下代码:
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可行,但显然不行.