DataTable Table{get; set;}
DataAdapter dataAdapter;
private void DeleteMethod(object obj)
{
var indexDataTable= //получаете здесь индекс из колонки "индекс"(например) выбранной строки
var indexDataGridRow = //тут индекс самой строки, чтобы удалить ее из DataTable, либо вообще DataTable заново получать
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = new SqlConnection(connectionString);
cmd.CommandText = "DELETE FROM YourTableName where id=" + indexDataTable;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
Table.Rows[indexDataGridRow].Delete();
Table.AcceptChanges();
dataAdapter.Update(Table);
}
После запуска программы в окне изображается две полосы прокрутки.
<Window x:Class="Toster.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Toster"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" MinWidth="200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="15"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<Canvas Name="Field">
<Button Canvas.Left="120" Canvas.Top="150"
Height="50" Width="50" Click="Button_Click"/>
<Button Canvas.Left="250" Canvas.Top="180"
Height="50" Width="50" Click="Button_Click"/>
</Canvas>
<ScrollBar x:Name="VerticalScrollBar"
HorizontalAlignment="Right"
Grid.Column="1" Grid.Row="0"
Scroll="VerticalScrollBar_Scroll"/>
<ScrollBar x:Name="HorizontalScrollBar"
Orientation="Horizontal" VerticalAlignment="Bottom"
Grid.Column="0" Grid.Row="1"
Scroll="HorizontalScrollBar_Scroll"/>
</Grid>
</Window>
Наводя указатель мыши на одну из двух фигур, можно выбирать, какая из этих фигур связана с полосами прокрутки.
public partial class MainWindow : Window
{
public Point SelectedPoint { get; set; }
public Button SelectedButton { get; set; }
public MainWindow()
{
DataContext = this;
InitializeComponent();
VerticalScrollBar.IsEnabled = false;
HorizontalScrollBar.IsEnabled = false;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (SelectedButton != null)
SelectedButton.Content = "";
SelectedButton = sender as Button;
SelectedButton.Content = "X";
SelectedPoint = SelectedButton.TransformToAncestor(Field).Transform(new Point(0, 0));
VerticalScrollBar.Value = SelectedPoint.Y / Field.ActualHeight;
HorizontalScrollBar.Value = SelectedPoint.X / Field.ActualWidth;
VerticalScrollBar.IsEnabled = true;
HorizontalScrollBar.IsEnabled = true;
}
private void VerticalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
SelectedPoint = new Point(SelectedPoint.X, VerticalScrollBar.Value * Field.ActualHeight);
Canvas.SetTop(SelectedButton, SelectedPoint.Y);
}
private void HorizontalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
SelectedPoint = new Point(HorizontalScrollBar.Value * Field.ActualWidth, SelectedPoint.Y);
Canvas.SetLeft(SelectedButton, SelectedPoint.X);
}
}
class UserInfo
{
public string ID { get; set; }
public string AccountName { get; set; }
public string PersonaName { get; set; }
public string RememberPassword { get; set; }
public string Mostrecent { get; set; }
public string TimeStamp { get; set; }
}
class Program
{
static void Main(string[] args)
{
string path = @"E:\=NoDel=\Рабочий стол\Новый текстовый документ (2).txt";
List<UserInfo> users = new List<UserInfo>();
using (StreamReader sr = new StreamReader(path))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line == "{")
users.Add(GetUserInfo(sr));
}
}
string SelectedID = "\"76561198404997878\""; //например вот такой ID мы выбрали
string writePath = @"E:\=NoDel=\Рабочий стол\Новый текстовый документ (3).txt";
UserInfo selectedUserInfo = users.FirstOrDefault(u => u.ID.Contains(SelectedID));
using (StreamWriter sw = new StreamWriter(writePath))
{
sw.WriteLine("{");
sw.WriteLine(selectedUserInfo.ID);
sw.WriteLine(" {");
sw.WriteLine(selectedUserInfo.AccountName);
sw.WriteLine(selectedUserInfo.PersonaName);
sw.WriteLine(selectedUserInfo.RememberPassword);
sw.WriteLine(selectedUserInfo.Mostrecent);
sw.WriteLine(selectedUserInfo.TimeStamp);
sw.WriteLine(" }");
sw.WriteLine("}");
}
Console.ReadLine();
}
public static UserInfo GetUserInfo(StreamReader sr)
{
UserInfo userInfo = new UserInfo
{
ID = sr.ReadLine()
};
sr.ReadLine();
userInfo.AccountName = sr.ReadLine();
userInfo.PersonaName = sr.ReadLine();
userInfo.RememberPassword = sr.ReadLine();
userInfo.Mostrecent = sr.ReadLine();
userInfo.TimeStamp = sr.ReadLine();
return userInfo;
}
}
CurrencyManager currencyManager = (CurrencyManager)BindingContext [dataGridView1.DataSource];
currencyManager.SuspendBinding();
dataGridView1.CurrentCell = this.dataGridView1[columnNumber, visibleRowNumber];
NewWindow window = new NewWindow();
window.ShowDialog();
<Window x:Class="SxApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SxApp"
mc:Ignorable="d"
Title="Aesthetic" Height="450" Width="450">
<Window.Background>
<ImageBrush
ImageSource="/SxApp;component/images/bck.jpg" Stretch="UniformToFill"/>
</Window.Background>
<Window.Resources>
<Color x:Key="vapor_1">#db2525</Color>
<Color x:Key="vapor_2">#a944ff</Color>
<Color x:Key="vaporBorder">#8c5791</Color>
<Color x:Key="vaporLime">#32CD32</Color>
<ControlTemplate x:Key="ButtonTemplate"
TargetType="Button">
<Border x:Name="Border"
CornerRadius="2000"
TextBlock.Foreground="pink"
TextBlock.FontSize="23"
TextBlock.FontStyle="Italic"
TextBlock.FontWeight="Bold"
Margin="10"
>
<Border.Background >
<LinearGradientBrush>
<GradientStopCollection>
<GradientStop Offset="0" Color="{Binding ButtonColor1}"/>
<GradientStop Offset="1" Color="{Binding ButtonColor2}"/>
</GradientStopCollection>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter
RecognizesAccessKey="True"
VerticalAlignment="Center"
HorizontalAlignment="Center"
/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Border" Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="{Binding ButtonPressColor1}" Offset="1" />
<GradientStop Color="{Binding ButtonPressColor2}" Offset="0.2" />
</RadialGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty=
"Background.GradientStops[0].Color"
To="{StaticResource vapor_2}" Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="Forever">
</ColorAnimation>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
To="{StaticResource vapor_1}" Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="Forever">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background.GradientStops[0].Color"
Duration="0:0:1">
</ColorAnimation>
<ColorAnimation Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
Duration="0:0:1">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button
Name="aesButton"
Click="AesButton_Click"
Content="Aesthetic"
Width="200"
Height="200"
Template="{StaticResource ButtonTemplate}"/>
</Grid>
</Window>
using System;
using System.ComponentModel;
using System.Windows;
namespace SxApp
{
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string buttonColor1;
public string ButtonColor1
{
get => buttonColor1;
set
{
buttonColor1 = value;
OnPropertyChanged("ButtonColor1");
}
}
private string buttonColor2;
public string ButtonColor2
{
get => buttonColor2;
set
{
buttonColor2 = value;
OnPropertyChanged("ButtonColor2");
}
}
private string buttonPressColor1;
public string ButtonPressColor1
{
get => buttonPressColor1;
set
{
buttonPressColor1 = value;
OnPropertyChanged("ButtonPressColor1");
}
}
private string buttonPressColor2;
public string ButtonPressColor2
{
get => buttonPressColor2;
set
{
buttonPressColor2 = value;
OnPropertyChanged("ButtonPressColor2");
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
ButtonColor1 = "#db2525";
ButtonColor2 = "#a944ff";
ButtonPressColor1 = "#8c5791";
ButtonPressColor2 = "#32CD32";
}
private void AesButton_Click(object sender, RoutedEventArgs e)
{
string temp = ButtonColor1;
ButtonColor1 = ButtonColor2;
ButtonColor2 = temp;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}