Как добавить обработчик событий Double_Click в таблицу данных? - PullRequest
0 голосов
/ 28 мая 2019

Я работаю с VisualStudio19, C # и WPF.У меня есть метод, чтобы скопировать выбранный Datarow из Таблицы 1 в Таблицу 2 щелчком кнопки, но теперь я хочу скопировать строку, когда я дважды щелкаю по ней.Я буду использовать тот же метод, что и button_click, поэтому мне нужен только Eventhandler, который запускает мой метод при двойном клике

Таблицы:

       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;
    }

Две оставленные таблицы - это таблица, которую я хочускопируйте строку, и право - это целевая строка для строки.

enter image description here

Мой метод копирования выбранного Datarow с помощью кнопки

        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 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?Когда я не могу использовать их для Таблицы, как я могу создать новый Eventhandler для этого события?

1 Ответ

0 голосов
/ 28 мая 2019

Как вы знаете, 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");
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...