c# - 如何将 Double_Click 事件处理程序添加到 DataTable?
问题描述
我使用 VisualStudio19、C# 和 WPF。我有一种方法可以通过 button_click 将选定的 Datarow 从表一复制到表二,但现在我想在双击该行时复制它。我将使用与 button_click 相同的方法,因此我只需要一个事件处理程序,它在双击时启动我的方法
表格:
public MainWindow()
{
InitializeComponent();
//First Table for all values
tableAllVar.Columns.Add("Parameter", typeof(string));
tableAllVar.Columns.Add("Adresse", typeof(string));
tableAllVar.Columns.Add("Groesse", typeof(string));
dgTable1.ItemsSource = tableAllVar.DefaultView;
//second Table for selected values
tableSelectedVar.Columns.Add("Parameter", typeof(string));
tableSelectedVar.Columns.Add("Adresse", typeof(string));
tableSelectedVar.Columns.Add("Groesse", typeof(string));
dgTable2.ItemsSource = tableSelectedVar.DefaultView;
}
左边的两个表是我要复制行的表,右边是该行的目标表。
我用按钮复制所选数据行的方法
private void ButtonAddVar_Click(object sender, RoutedEventArgs e)
{
string[] daten = new string[3];
if (dgTable1.SelectedItem != null)
{
DataRowView datarow = (DataRowView)dgTable1.SelectedItem;
daten[0] = (string)datarow.Row.ItemArray[0];
daten[1] = (string)datarow.Row.ItemArray[1];
daten[2] = (string)datarow.Row.ItemArray[2];
bool rowExists = ContainDataRowInDataTable(tableSelectedVar, datarow.Row);
if (rowExists == false)
{
tableSelectedVar.Rows.Add(daten[0], daten[1], daten[2]);
//anzahl++;
}
else
{
MessageBox.Show("Die Variable ist bereits Teil der Variablenüberwachung", null, MessageBoxButton.OK, MessageBoxImage.Error);
}
}
else
MessageBox.Show("Bitte eine Variable aus der linken Liste mit der Maus auswählen",null,MessageBoxButton.OK,MessageBoxImage.Information);
}
这里是我在 xaml 中创建我的 Datagrid 的方式
<DataGrid Name="dgTable1" HorizontalAlignment="Left" Height="180" Margin="5,30,0,0" VerticalAlignment="Top" Width="150" AutoGenerateColumns="False" FontSize="6" ColumnHeaderHeight="15" IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTextColumn Header="Parameter" Binding="{Binding Path=Parameter}" Width="auto" />
<DataGridTextColumn Header="Adresse" Binding="{Binding Path=Adresse}" Width="auto"/>
<DataGridTextColumn Header="Größe" Binding="{Binding Path=Größe}" Width="auto"/>
</DataGrid.Columns>
</DataGrid>
我看到 DataGrid 有一个用于 Double_Click 的事件处理程序,但我不知道如何将它们用于 DataTable?当我不能将它们用于 Table 时,如何为该事件创建一个新的 Eventhandler?
解决方案
如您所知,DataGrid 有一个用于复制一行的 Double_Click 事件处理程序,您可以使用选定的行属性。
private void dgTable1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
string[] daten = new string[3];
if (dgTable1.SelectedItem != null)
{
DataRowView datarow = (DataRowView)dgTable1.SelectedItem;
daten[0] = (string)datarow.Row.ItemArray[0];
daten[1] = (string)datarow.Row.ItemArray[1];
daten[2] = (string)datarow.Row.ItemArray[2];
}
else
MessageBox.Show("please select again");
}
推荐阅读
- matlab - 为嵌套的“for循环”绘制单独的图
- javascript - 如何区分输入来自手持扫描仪/枪扫描仪和 jQuery 中的键盘?
- oracle - ORACLE PL/SQL 中的表值函数
- python - 为什么许多返回字符串值的 django 内部函数现在不起作用?
- matplotlib - matplotlib - 独立颜色条的遮罩部分
- javascript - setState后如何使用reducer函数
- javascript - 对于 NodeJs Promise,Await 和 Then 哪个更好?以及等待如何工作
- javascript - 无论类型是否正确,PropTypes 都会出错
- ios - iOS:UICollectionView 内容重置和 dequeueReusableCell
- python - 如何消除 OneHotEncoder 函数中的这个错误?