【发布时间】:2020-06-13 11:10:58
【问题描述】:
下午好。 我开始在这里讨论这个问题,但我认为这个话题值得单独提出一个问题,因为我无法“从滑动中”找到答案。 Panee was discussed at StaskOverflov 多亏了这个决定,对类进行了更改 (new full code)。
现在类的改变类型如下:
class Seasonality_ProgressBar : Control
#region --События--
public delegate void OnValueChangedEvent(int value);
public event OnValueChangedEvent OnValueChanged;
#endregion
Stopwatch st = new Stopwatch();
MouseButtons mb = MouseButtons.None;
public int Value
{
get => _value;
set
{
if (value >= ValueMinimum && value <= ValueMaximum)
{
_value = value;
Invalidate();
}
else
{
value = _value;
Invalidate();
}
OnValueChanged?.Invoke(_value);
}
}
public Seasonality_ProgressBar()
{
}
protected override void OnMouseDown(MouseEventArgs e)
{
// base.OnMouseDown(e);
if (!st.IsRunning)
{
mb = e.Button;
st.Start();
if (e.Button == mb)
{
x = e.X;
y = e.Y;
timer.Elapsed += OnTimedEvent;
timer.Start();
}
}
base.OnMouseDown(e);
}
private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
timer.Stop();
//MessageBox.Show("Сработало");
float reultation = x - y;
if (reultation > 0)
{
Value = "A";
}
else
{
Value = "B";
}
}
现在您可以在表单上订阅活动:
label2.Text = (-seasonality_ProgressBar1.Value).ToString();
seasonality_ProgressBar1.OnValueChanged += SomeEvent;
而 SomeEvent 方法的种类是:
private void SomeEvent(int value)
{
//Use Invoke here because your event is called from another thread
Invoke(new Action(() =>
{
label2.Text = (-value).ToString();
}));
//File.AppendAllText("log.txt", "seasonality_ProgressBar1_MouseUp\r\n");
}
@M。 Artem,感谢您的帮助。
我的问题是这样的。 此类元素的形式很多(12 件)。它们中的每一个都应在单独的标签上显示自己的值。我正在尝试学习如何在表单上创建相同类型的元素数组,而它们属于自己的类或标准(据我了解,这很重要),即您需要 2 个解决方案,将值分配给他们,从非标准字段中读取值(我的班级有“作者”字段)。
朋友们,帮我学习,pliz。 准备回答所有其他问题。
准备发送任何附加组件。
我是新来的,批评、贬低、支配。
【问题讨论】:
-
您可以将现有的 ProgressBar 添加到 List : List
bar = new List () {progressBar1, progressBar2, progressBar3};
标签: c# .net forms class frameworks