- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在列表框内,如果双击列表框项,列表框项的值分配给列表框内的动态文本框。(我在列表框内创建了一个动态文本框)。然后我需要修改文本框值。之后单击 enter 键,将文本框值添加到列表框项中,然后将动态文本框删除。单击 esc 键时,将初始值添加到列表框项中。
我在 MouseEventArg 方法内部遇到问题,如何调用 keyeventArgs 方法。
C#
System.Windows.Controls.TextBox dynamicTextBox = new System.Windows.Controls.TextBox();
string previousvalue;
private void items_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
//Get the index value
var index = lstbxindex.Items.IndexOf(lstbxindex.SelectedItem);
//set the textbox height and width property
dynamicTextBox.Width = 230;
dynamicTextBox.Height = 50;
//Add a textbox to the listbox
this.lstbxindex.Items.Add(dynamicTextBox);
//To assign the selectedITem values to textbox
dynamicTextBox.Text = lstbxindex.SelectedItem.ToString();
//Get the textbox values before editing
previousvalue = dynamicTextBox.Text;
//Remove the values from the listbox item
lstbxindex.Items.RemoveAt(index);
dynamicTextBox.AcceptsReturn = true;
}
private void checkenterclicked(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
EnterClicked(sender, e);
//dynamicTextBox.PreviewKeyDown += EnterClicked;
}
}
private void EnterClicked(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
using (DatabaseConnector databaseConnection = new DatabaseConnector(ApplicationConstants.ConnectionString))
using (ProjectsTable projectsTable = new ProjectsTable(databaseConnection))
{
//Here Filter the Name from project Table which DbActive state is zero
projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.DbActive, CompareOperator.Equals, true));
projectsTable.Read();
projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.Name, CompareOperator.Equals, dynamicTextBox.Text));
projectsTable.Read();
foreach (DtoProjectsRow row in projectsTable.Rows)
{
//Guid DbId = row.DbId;
Guid DbId = row.DbId;
var UpdateRow = projectsTable.NewRow();
UpdateRow.Name = dynamicTextBox.Text;
UpdateRow.DbId = DbId;
UpdateRow.DbActive = true;
// Alter the row to the table.
projectsTable.AlterRow(UpdateRow);
// Write the new row to the database.
projectsTable.Post();
//Add the items in comboBox
lstbxindex.Items.Add(dynamicTextBox.Text);
}
// dynamicTextBox = e.Source as System.Windows.Controls.TextBox;
}
}
else
{
if (e.KeyCode == Keys.Escape)
{
lstbxindex.Items.Add(previousvalue);
lstbxindex.Items.Remove(dynamicTextBox);
}
}
}
最佳答案
试试这个:
订阅您的动态文本框按键事件。把它放在构造函数中。例如:
System.Windows.Controls.TextBox dynamicTextBox = new System.Windows.Controls.TextBox();
string previousvalue;
public MainWindows()
{
InitializeComponent();
//subscribe to previewKeyDown, KeyDown will not work for enter key
dynamicTextBox.PreviewKeyDown += dynamicTextBox_KeyDown;
}
// this will hit if any key is pressed
void dynamicTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
using (DatabaseConnector databaseConnection = new DatabaseConnector(ApplicationConstants.ConnectionString))
using (ProjectsTable projectsTable = new ProjectsTable(databaseConnection))
{
//Here Filter the Name from project Table which DbActive state is zero
projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.DbActive, CompareOperator.Equals, true));
projectsTable.Read();
projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.Name, CompareOperator.Equals, dynamicTextBox.Text));
projectsTable.Read();
foreach (DtoProjectsRow row in projectsTable.Rows)
{
//Guid DbId = row.DbId;
Guid DbId = row.DbId;
var UpdateRow = projectsTable.NewRow();
UpdateRow.Name = dynamicTextBox.Text;
UpdateRow.DbId = DbId;
UpdateRow.DbActive = true;
// Alter the row to the table.
projectsTable.AlterRow(UpdateRow);
// Write the new row to the database.
projectsTable.Post();
//Add the items in comboBox
lstbxindex.Items.Add(dynamicTextBox.Text);
}
// dynamicTextBox = e.Source as System.Windows.Controls.TextBox;
}
}
private void items_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
//Get the index value
var index = lstbxindex.Items.IndexOf(lstbxindex.SelectedItem);
//set the textbox height and width property
dynamicTextBox.Width = 230;
dynamicTextBox.Height = 50;
//Add a textbox to the listbox
this.lstbxindex.Items.Add(dynamicTextBox);
//To assign the selectedITem values to textbox
dynamicTextBox.Text = lstbxindex.SelectedItem.ToString();
//Get the textbox values before editing
previousvalue = dynamicTextBox.Text;
//Remove the values from the listbox item
lstbxindex.Items.RemoveAt(index);
dynamicTextBox.AcceptsReturn = true;
}
关于c# - 如何在 wpf 中调用 KeyEventArgs 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996601/
我对 KeyEventArgs 的 KeyCode 和 KeyData 以及 KeyValue 有疑问。KeyCode 和Keydata 都是Keys 类型,但我不知道它们有什么区别。对于 KeyVa
使用有什么区别 e.Handled = true 和 e.SuppressKeyPress = true 我读到过 SuppressKeyPress 调用 e.Handled,但除此之外它还有作用吗?
KeyEventArgs.systemKey 和有什么区别和 KeyEventArgs.Key ?在 WPF Usercontrol 类中捕获按键事件是否可以,如下所示。 protected
我正在使用 global keyboard hooks当窗口失焦时作为键盘监听器。我已经完成了一些代码,我意识到无论出于何种原因,打开大写锁定都会更改 KeyEventArgs 的输出。使用 shif
我有一个小型事件处理程序来处理用户按下的或条形码扫描器传送的所有键: public void KeyDownSink(object sender, System.Windows.Input.KeyEv
在 c# .net 应用程序中有这个: 字符串键 = e.KeyCode.ToString(); 在 .net 1.1 中 key = "enter" 在 .net 3.5 中 key = "retu
有没有办法确定 KeyEventArgs 中的键是否为字母/数字(A-Z、0-9)?还是我必须自己做?我找到了 e.KeyCode 的方法, 准确吗? if(((e.KeyCode >= Keys.A
有没有办法将 WPF 的 KeyEventArgs.Key 转换为 Char? 我尝试使用 KeyInterop: var x = (Char)KeyInterop.VirtualKeyFromKey
在列表框内,如果双击列表框项,列表框项的值分配给列表框内的动态文本框。(我在列表框内创建了一个动态文本框)。然后我需要修改文本框值。之后单击 enter 键,将文本框值添加到列表框项中,然后将动态文本
基本上我有运行时加载的类,如下所示: [Plugin("Plugin name")] class PluginActions { [Action("Flip Normals") public
下面会详细描述 我有课 //MyDataHeaders.h public ref class MyGlobalData { //blah...blah...blah... public: static
我在一个联网系统(C# 中)上工作,在一台计算机上,我通过低级 Hook 接收键盘输入,然后将输入传输到另一台必须注入(inject)的计算机。 Hook 在 KeyEventArgs 类中传递键盘输
我目前正在开发一款 WinForms 项目小游戏。游戏场由玩家(一个单独的类)可以继续移动的瓷砖网格构建而成。我希望玩家使用箭头键移动并为它设置了一个事件处理程序,但它似乎从未被调用过。 (最小化)播
我正在捕获一个 KeyDown 事件,我需要能够检查当前按下的键是否是:Ctrl + Shift + M ? 我知道我需要使用 KeyEventArgs 中的 e.KeyData、Keys 枚举以及带
这个问题在这里已经有了答案: ListView KeyUp Error for the Control Key (1 个回答) 关闭 8 年前。 我为 Windows 窗体窗体的 KeyDown 事
我有 System.Windows.Input.KeyEventArgs 变量。我想得到真正的炭。例如,我按键盘上的 } 按钮。通常它会返回类似 oem.. 的字符串,但我想获取 字符。怎么办? [编
作为解决问题的方法,我认为我必须处理 KeyDown 事件以获取用户实际键入的可打印字符。 KeyDown 为我提供了一个具有 KeyCode、KeyData、KeyValue、Modifiers、A
我需要将事件参数作为 char 获取,但是当我尝试转换 Key 枚举时,我得到的字母和符号与传入的完全不同。 如何正确地将 Key 转换为字符? 这是我试过的 ObserveKeyStroke(thi
我找到了这个看起来像我需要的答案: How can I programmatically generate keypress events in C#? 除了我无法创建 KeyEventArgs 的实
我有一个文本框,我试图将 KeyEventArgs 从 View 传递到 View 模型。但我不知道如何实现它。基本上我需要的是,如果键入一些特殊字符,则要调用一些函数,如果键入普通文本(如 A、B、
我是一名优秀的程序员,十分优秀!