-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
public class WindowEx : Window //...
{
//hwnd окна
public IntPtr Handle { get; set; }
private const int GWL_EXSTYLE = (-20);
private const uint WS_EX_TOPMOST = 0x00000008;
public void SetTopmost()
{
SetTopmost(Handle);
}
public static void SetTopmost(IntPtr hWnd)
{
SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST));
}
public void UnSetTopmost()
{
UnSetTopmost(Handle);
}
public static void UnSetTopmost(IntPtr hWnd)
{
SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) & ~WS_EX_TOPMOST));
}
private bool _topmost;
public new bool Topmost
{
set
{
if (value)
{
SetTopmost();
}
else
{
UnSetTopmost();
}
_topmost = value;
}
get { return _topmost; }
}
}
Тру окно. С тру топмостом. Бесполезно чуть менее, чем полностью:
1) Новый топмост не нужен. Оригинальное свойство через SetWindowPos сделает тоже самое (SetWindowPos может менять дополнительный стиль WS_EX_TOPMOST)
2) Handle (hwnd окна) c публичным set. Круто, чё. Следовало бы сделать public IntPtr Handle { get; private set; }
Так я писал код где-то лет 6 назад.
Janycz,
08 Марта 2020
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
private void MainDataGridCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.Column == MainDataGrid.Columns[1])
return;
if (CheckComplianceWithIndentation)
if ((NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) != NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation)) && !Rows[e.Row.GetIndex()].Tags.Contains("I"))
Rows[e.Row.GetIndex()].Tags += "I";
else if (NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) == NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation))
Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("I", "");
if ((Rows[e.Row.GetIndex()].Translation.Trim() == "") && !Rows[e.Row.GetIndex()].Tags.Contains("N"))
Rows[e.Row.GetIndex()].Tags += "N";
else if (Rows[e.Row.GetIndex()].Translation.Trim() != "")
Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("N", "");
//...
}
public void TagsInit()
{
if (CheckComplianceWithIndentation)
foreach (var hRow in Rows.Where(hRow => NumberOfLeadingSpaces(hRow.OriginalText) != NumberOfLeadingSpaces(hRow.Translation)))
{
hRow.Tags += "I";
}
foreach (var row in Rows.Where(hRow => hRow.Translation == ""))
{
row.Tags += "N";
}
}
Дано: C#, WPF, DataGrid, таблица.
Надо сделать: таблица имеет поля, в том числе и поле Tags, которое определяется полями Translation и OriginalText, а также настройками пользователя (CheckComplianceWithIndentation), нет бы его вынести в класс строки как геттер:
public string Tags => f(Translation, Original);
вместо:
private string _tags;
public string Tags
{
get => _tags;
set
{
_tags = value;
RaisePropertyChanged("Tags");
}
}
Так нет же, будем отлавливать изменения ячеек таблицы (MainDataGridCellEditEnding) и пересчитывать Tags. MainDataGrid.Columns[1] - это колонка с ними, прибито гвоздями в xaml: CanUserReorderColumns="False"
Эх, а еще и Trim вместо String.IsNullOrWhiteSpace.
А еще немного венгерской говнонотации (hRow).
Так я писал где-то лет 7 назад. Да, тогда стрелок не было, но они приведены в описании тупо для сокращения строк кода.
Janycz,
08 Марта 2020
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
// Задача: Рисовать в консоли прогресс бар, на сколько дней текущий год завершился
static void ProgressBarOfElapsedDays(DateTime dateTime, bool isRefreshebleat = false) // рефрешеБЛЕАТ! :))
{
int daysOfYear = DateTime.IsLeapYear(dateTime.Year) ? 366 : 365;
int dayInProcents = daysOfYear * 100 / 100; // WAT?
int currentDay = dateTime.DayOfYear * 100;
int daysOfYearNotElapsed = daysOfYear * 100 - currentDay; // Сложный матан
int procent = 100 - (daysOfYear * 100 - currentDay) / dayInProcents;
int buffer = 0;
if (isRefreshebleat)
{
if (Console.CursorTop >= 1 || Console.CursorLeft >= 1)
{
Console.SetCursorPosition(Console.CursorLeft - Console.CursorLeft, Console.CursorTop - Console.CursorTop); // когда Console.SetCursorPosition(0, 0) недостаточно
}
}
// остальной код
}
isRefreshebleat и всё остальное :))
adoconnection,
06 Марта 2020
-
0
- 1
- 2
- 3
- 4
- 5
- 6
public static void ActivateChangeHotKeyButtonModeButtonClick(object sender, EventArgs e)
{
TaskBarHidderForm.ChangeHotKeyPanel.Visible = true;
TaskBarHidderForm.KeyButtons[0].Text = TaskBarHidder.HotKeyCodes[0].ToString();
TaskBarHidderForm.KeyButtons[1].Text = TaskBarHidder.HotKeyCodes[1].ToString();
}
кодить под пивко заебись :)
pashaluk31,
21 Января 2020
-
−4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
public static unsafe int Strlen(byte* data)
{
int i = 0;
while (data[i] != 0)
{
++i;
}
return i;
}
Работа с C строками
Koshak90,
20 Декабря 2019
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
public static XmlNode FindNodeRecursive(XmlNode document, string nodeName)
{
if (document.Name == nodeName)
return document;
foreach (XmlNode node in document.ChildNodes)
{
if (node.Name == nodeName)
return node;
XmlNode resNode = FindNodeRecursive(node, nodeName);
if (resNode != null && resNode.Name == nodeName)
return resNode;
}
return (XmlNode)null;
}
<...>
XmlDocument document = new XmlDocument();
document.LoadXml(request);
var PurchaseIdNode = XmlProcessing.FindNodeRecursive(document, "PurchaseId");
Разработчик с 15-летним стажем
XPath'у не доверяет
Barch,
12 Декабря 2019
-
+2
- 1
- 2
- 3
https://tjournal.ru/analysis/128216-moshenniki-3-0-kak-ne-popastsya-na-udochku-novogo-pokoleniya-prestupnikov-v-sfere-it
https://leonardo.osnova.io/0234cd39-a2ef-c6d8-d8df-87df562f9997/-/scale_crop/600x398/center/
booratihno,
30 Ноября 2019
-
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
public static long NextTimestamp()
{
if (initTimestamp == null)
{
lock (syncRoot)
{
if (initTimestamp == null)
{
initTimestamp = false;
var sessionProvider = Locator.GetServiceNotNull<ISessionProvider>();
TimestampService.GetTimestamp();
sessionProvider.CloseSession("");
initTimestamp = true;
}
}
}
return initTimestamp.Value ? TimestampService.GetTimestamp() : 0;
}
Нельзя просто взять и вызвать TimestampService.GetTimestamp() - StackOverflowException получишь. Вот как надо!
scrappyabc,
27 Ноября 2019
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
using System;
using System.Drawing;
using System.Windows.Forms;
class HTMLCheapRedactor
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Form a = new Form() { Text = "HTML Doc" },
b = new Form() { Text = "HTML Code" };
var web = new WebBrowser() { Dock = DockStyle.Fill };
var txt = new TextBox()
{
Multiline = true,
Dock = DockStyle.Fill,
ScrollBars = ScrollBars.Both,
Font = new Font("Consolas", 12f),
WordWrap = false,
AcceptsTab = true
};
web.DataBindings.Add(new Binding("DocumentText", txt, "Text"));
a.Controls.Add(web);
b.Controls.Add(txt);
b.Show();
b.AddOwnedForm(a);
txt.Text = @"<html>
<head>
<title>Hello World!</title>
</head>
<body>
Hello World!
</body>
</html>";
Application.Run(a);
}
}
groser,
24 Ноября 2019
-
+1
- 1
if (tableOfVariables[i].Name == "replace".ToUpper())
)))00
neonmystery,
19 Ноября 2019