private const string FILE = "C:\\savedata.txt";
public Form1()
{
InitializeComponent();
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
if (File.Exists(FILE)){
IFormatter f = new BinaryFormatter();
var fs = new FileStream(FILE, FileMode.Open, FileAccess.ReadWrite);
var data = (List<string>) f.Deserialize(fs);
comboBox1.Items.AddRange(data.ToArray());
fs.Close();
}
}
protected override void OnClosing(CancelEventArgs e)
{
IFormatter f = new BinaryFormatter();
var data = comboBox1.Items.Cast<string>().ToList();
var fs = new FileStream(FILE, FileMode.Create, FileAccess.ReadWrite);
f.Serialize(fs, data);
fs.Close();
}
private void Button_Click(object sender, RoutedEventArgs e){
var t = new Task(() =>{
//дейтсвия выполняющиеся в другом потоке
Thread.Sleep(1000);
});
t.ContinueWith(new Action<Task>((task) =>{//вызываем по завершению работы таски
Dispatcher.Invoke(new Action(() =>{//вызываем в основном потоке, потому-что обращения к gui элементам может быть только через него
try{
if (t.IsFaulted)//если у нас возникло исключение в нашей первой таске вызываем его здесь что уловить его тут и обработать
throw t.Exception;
textblock.Text = "my text";
}
catch (Exception exception){
Console.WriteLine(exception);
}
}));
}));
t.Start();
}
private async void Button_Click(object sender, RoutedEventArgs e){
try{
await Task.Run(() =>{
//дейтсвия выполняющиеся в другом потоке
Thread.Sleep(1000);
});
textblock.Text = "my text";//и мы волшебно продолжаем выполнение в главном потоке
}
catch (Exception exception){//будет вызван даже если возникнет исключение в таске
Console.WriteLine(exception);
}
}
List<Task> tasks = new List<Task>();
tasks.Add(Task.Run(() =>{
Thread.Sleep(1000);
Console.WriteLine("1");
}));
tasks.Add(Task.Run(() =>{
Thread.Sleep(1000);
Console.WriteLine("2");
}));
tasks.Add(Task.Run(() =>{
Thread.Sleep(1000);
Console.WriteLine("3");
}));
await Task.WhenAll(tasks.ToArray());
Console.WriteLine("continue");
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
IntPtr HWND = GetForegroundWindow();
string appname = Process.GetProcesses().First(p => p.MainWindowHandle == HWND).ProcessName;
string code = File.ReadAllText(@"MyCompil.cs");
code =code.Replace("hello", "Hi!");
private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) {
if (e.Exception is WpfLocalizedException ex){
//ex.dicts //ваш объект к которому нужно обратится...
}
}
}
var res = await ytdl.RunVideoPlaylistDownload(
"https://www.youtube.com/playlist?list=PLPfak9ofGSn9sWgKrHrXrxQXXxwhCblaT",
start: 52, end: 76
);
<DataGrid ItemsSource="{Binding GridItems}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
public class MyItem{
public string Name { get; set; } = "myname";
public Func<DateTime?, bool> DateChecker = null;
public DateTime? _Date;
public DateTime? Date {
get => _Date;
set {
if (DateChecker != null && DateChecker.Invoke(value)){//При попытке установить дату вызваем метод который проверить сколько в коллекции у нас уже таких дат
_Date = value;//Устанавливает дату если метод DateChecker вернул true
}
}
}
}
public partial class MainWindow : Window
{
public ObservableCollection<MyItem> GridItems { get; set; }= new ObservableCollection<MyItem>(){};//Коллекция элементов
public bool DateCheckerMethod(DateTime? dt){//Метод который будет вызываться при попытке изменить дату
if (dt != null && GridItems.Count(item => item.Date != null && item.Date.Value.CompareTo(dt.Value) == 0) >= 7){
MessageBox.Show("Максимум 7 дат");
return false;
}
return true;
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
GridItems.CollectionChanged += (sender, args) => {//При добавлении в колелекцию нового элемента, присваиваем метод обработки дат
foreach (var myItem in args.NewItems.Cast<MyItem>())
myItem.DateChecker = DateCheckerMethod;
};
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date});
GridItems.Add(new MyItem() { _Date = DateTime.Now.Date.AddDays(1)});
}
}
function myfunc($text){
$text = utf8_encode($text);
$buffer = [];
foreach(mb_str_split($text) as $v)
$buffer[] = ord($v);
for ($i = count($buffer)-2; $i >= 0; $i--)
$buffer[$i] ^= $buffer[$i+1];
$buffer[count($buffer) - 1] ^= $buffer[0];
return implode(array_map("dec2hexbyte", $buffer));
}
function dec2hexbyte($number){
$hexval = dechex($number);
if(mb_strlen($hexval) == 1)
$hexval = "0".$hexval;
return mb_strtoupper($hexval);
}
$text = "my text";
echo myfunc($text);
Graphics g = Graphics.FromImage(gBitmap);
g.Clear(Color.White);
var list =
table.GroupBy(g => new { g.Rating })
.Select(f => new int[] { f.Key.Rating, table.Count(f1 => f1.Rating.Equals(f.Key.Rating)) })
.ToList();
foreach (var l in list)
Console.WriteLine("Рейинг {0} - количество {1}",l[0],l[1]);
static void Main(string[] args)
{
Console.WriteLine("Введите n:");
int n = Int32.Parse(Console.ReadLine());
//Строим матрицу
int[,] mx = new int[n,n];
bool invert = true;
for (int i = 0, c = 1; i < n; i++) {
for (int j = 0; j < n; j++,c++) {
int inx = invert ? n - j - 1: j;
mx[inx, i] = c;
}
invert = !invert;
}
//Выводим
int maxWidth = (n * n).ToString().Length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
sb.Append(mx[i, j]).Append(' ', maxWidth - mx[i, j].ToString().Length+1);
sb.AppendLine();
}
Console.WriteLine(sb);
Console.ReadKey();
}