2 つの winform があり、それらの間でデータを渡したいと考えています。
Form 1 は大きなピクチャーボックスにすぎません。
Form2 は、フォーム 1 の上で常に開いたままです。これは、Exit ボタンのある半透明のコントロールとして機能し、トラックバーを追加しました。終了ボタンは正常に機能しますが、値が変更された場合にトラックバーの値を読み取るのに問題があります。
私がしたいのは、トラックバーの値が変更された場合、値が最初のフォームに送信され、イベントがトリガーされることです。
これのどこが間違っているのですか?
Form1は
public sbyte value
{
get { return Exitform.myValue; }
}
public Fullscreenpreview(string filename)
{
InitializeComponent();
this.pictureBox1.MouseMove += this.pictureBox_MouseMove;
pictureBox1.Image = new Bitmap(filename);
pictureBox1.Refresh();
//to show exit button which is a seperate form
var frm3 = new Exitform();
frm3.FormClosed += (o, e) => this.Close();
frm3.Show();
frm3.TopMost = true;
//to show exit button which is a seperate form
if (myValue != 0)
{
MessageBox.Show("zoinks the value is = " + value);
}
}
フォーム2は
public partial class Exitform : Form
{
private const int CpNocloseButton = 0x200;
private bool mouseIsDown = false;
private Point firstPoint;
public static sbyte myValue = 0;
public Exitform()
{
InitializeComponent();
this.TopMost = false;
}
protected override CreateParams CreateParams
{
get
{
CreateParams myCp = base.CreateParams;
myCp.ClassStyle = myCp.ClassStyle | CpNocloseButton;
return myCp;
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
firstPoint = e.Location;
mouseIsDown = true;
//http://stackoverflow.com/questions/3441762/how-can-i-move-windows-when-mouse-down
}
private void label1_MouseUp(object sender, MouseEventArgs e)
{
mouseIsDown = false;
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (mouseIsDown)
{
// Get the difference between the two points
int xDiff = firstPoint.X - e.Location.X;
int yDiff = firstPoint.Y - e.Location.Y;
// Set the new point
int x = this.Location.X - xDiff;
int y = this.Location.Y - yDiff;
this.Location = new Point(x, y);
}
}
private void contrast_trackbar_Scroll(object sender, EventArgs e)
{
myValue = 1;
}
}
ありがとうアンディ