これは私のコントロールのコンテキストです:
/*
Form
StatusStrip
ToolStripStatusLabel
TableLayoutPanel
MyGenioView
*/
そのため、MyGenioViewはMouseMoveイベント ハンドラーをインターセプトしています。既に存在するコードは、ラバー バンドの四角形用です。ので、私は持っています:
public void MyMouseMove(Object sender, MouseEventArgs e)
{
Point ptCurrent = new Point(e.X, e.Y);
// If we "have the mouse", then we draw our lines.
if (m_bHaveMouse)
{
// If we have drawn previously, draw again in
// that spot to remove the lines.
if (m_ptLast.X != -1)
{
MyDrawReversibleRectangle(m_ptOriginal, m_ptLast);
}
// Update last point.
m_ptLast = ptCurrent;
// Draw new lines.
MyDrawReversibleRectangle(m_ptOriginal, ptCurrent);
}
// New code here
}
私が理解できないのは、ハンドラーstatusStrip1.statusLabel
からの値を設定したいということです。MyGenioView MouseMove
やり方が思いつかない。
使用したいコードは次のとおりです。
OdGePoint3d pt = GetWorldCoordinates(ptCurrent);
String strCoordinate = String.Format("{0},{1}", ptCurrent.X, ptCurrent.Y);
statusStrip
しかし、それをメイン フォームオブジェクトにフィードする正しい方法は何でしょうか?
ご協力いただきありがとうございます。
アップデート:
statusStrip ラベル オブジェクトのテキストを設定する方法を知っています。それは私の問題ではありません。私の問題は、マウス ハンドラー イベントのコンテキストと、フォームとの関係に関連しています。質問の冒頭で説明されているように、コントロールのコンテキストを参照してください。これまでのコメントでは、それが考慮されていません。
これは、オブジェクト (マウス ハンドラーを受け取る)を作成するフォーム内の現在の場所です。MyGenioView
private void viewToolStripMenuItem_Click(object sender, EventArgs e)
{
OdDbDatabase TDDatabase = m_oGenioView.GetDatabase();
if (m_oGenioViewCtrl != null)
m_oGenioViewCtrl.DeleteContext();
tableLayoutPanel.RowCount = 1;
tableLayoutPanel.ColumnCount = 1;
m_oGenioViewCtrl = new MyGenioView();
m_oGenioViewCtrl.TDDatabase = TDDatabase;
m_oGenioViewCtrl.ResetDevice(true);
m_oGenioViewCtrl.Dock = DockStyle.Fill;
m_oGenioViewCtrl.Margin = new Padding(1);
tableLayoutPanel.Controls.Add(m_oGenioViewCtrl);
}