прежде всего
Я хотел бы заранее поблагодарить вас за то, что поделились каким-либо решением, действительным или нет, на этот вопрос.
У меня большая проблема с попыткой установить эффект затухания для метки в PowerShell Windows Forms.
Да, я знаю, это что-то совершенно конкретное, но я действительно не смог найти способ сделать это, и это сводит меня с ума.
Я мог бы получить этот код на интернет-ресурсах ... Ну, код Visual Basic, который я мог бы преобразовать в C #, но теперь я хочу использовать этот код в своем скрипте powershell, но есть некоторые методы, которые, кажется, быть несовместимым.
Проблема в том, что я не смог найти способ использовать этот метод в powershell:
[MethodImpl(MethodImplOptions.Synchronized)]
Кажется, это метод для языков C #, но я не могу найти ничего похожего в powershell.
У меня были другие коды в моей власти, но некоторые из них так длинны и только в c # не для Windows PowerShell WinForms.
Я уже слышал о том, чтобы код c # в скрипте Powershell добавлял ссылки на файл со структурой:
#This could call C# code located in other ps1 script
Add-Type -AssemblyName .\myCodeinC.ps1
Затем мне нужно сохранить код C # следующим образом:
Add-Type -TypeDefinition @" "@
Я знаю, и мне тоже нужна вещь, может быть, некоторые дополнительные вызовы для классов C #.
Export-ModuleMember -Variable _Myvariable1, _Myvariable2 `
-Function Set-MyFunctionCalled1, Get-MyFunctionCalled2
Ну, как вы видите, у меня есть некоторые идеи по этому поводу, но я все еще довольно новичок в этом ... Просто я не очень хорошо разбираюсь в языковых занятиях
По сути, это новое в PowerShell 5.0
.
В любом случае ... Я буду признателен за любую помощь в этом ...
Я приложил код C #, который мог сделать эффект затухания работы на этом языке, но я чувствую себя потерянным, пытаясь преобразовать его в режим языка powershell.
Еще раз спасибо за любую помощь или чаевые.
C-Sharp код для эффекта затухания.
private Label label3;
private System.Windows.Forms.Timer Timer1
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return _Timer1;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
if (_Timer1 != null)
{
_Timer1.Tick -= Timer1_Tick;
}
_Timer1 = value;
if (_Timer1 != null)
{
_Timer1.Tick += Timer1_Tick;
}
}
}
private Label _Label3;
private Label Label3
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return _Label3;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
if (_Label3 != null)
{
_Label3.Paint -= Label3_Paint;
_Label3.Click -= Label3_Click;
}
_Label3 = value;
if (_Label3 != null)
{
_Label3.Paint += Label3_Paint;
_Label3.Click += Label3_Click;
}
}
}
private void Timer1_Tick(object sender, EventArgs e)
{
Label3.Tag = System.Convert.ToInt32(Label3.Tag) - 10;
if (System.Convert.ToInt32(Label3.Tag) < 0)
{
Label3.Tag = 0;
Timer1.Stop();
}
Label3.Invalidate();
}
private void Label3_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Label3.BackColor);
e.Graphics.DrawString(Label3.Text, Label3.Font, new SolidBrush(Color.FromArgb(System.Convert.ToInt32(Label3.Tag), Label3.ForeColor)), 0, 0);
}
private void Label3_Click(object sender, EventArgs e)
{
Label3.Tag = 255;
Timer1.Start();
}
Создание объектов.
Label3 = new Label() { Parent = this, Location = new Point(20, 350), AutoSize = true, Text = "MytextFadingOutWithAClick", Font = new Font("arial", 24, FontStyle.Bold), Tag = 255, BackColor = Color.White, ForeColor = Color.Red };
Создание таймера
Timer1 = new System.Windows.Forms.Timer() { Interval = 50, Enabled = false };