-1

メソッドを使用してパネルに何かを描画しています。ボタンを介してこのメ​​ソッドを呼び出すと描画されますが、このメソッドを呼び出してForm_Loadも何も描画されません。デバッグすると、実際には問題なくコードを通過しますが、それでも何も描画されません。

以下にForm_LoadButton_Clickイベントを示します。

private: System::Void SelectElementForm_Load(System::Object^  sender, System::EventArgs^ e)
{
    if (ElementList->Count > 0)
    {
        Index = 0;
        DrawLinesInLayout();
    }
}

そしてボタン

private: System::Void btnLeft_Click(System::Object^  sender, System::EventArgs^  e)
{
    if (ElementList->Count > 0)
    {
        if (Index + 1 > 1)
        {
            Index--;
            DrawLinesInLayout();
        }
        else
        {
            Index = ElementList->Count - 1;
            DrawLinesInLayout();
        }
    }
}

を使用するPaint-eventと、フォームがポップアップしたときに機能します。しかし、その後、プログラムでコードを2回取得しましたが、これは無意味です。

だから私の質問は:

  • Form_load がメソッドを正しく使用せず、ボタンが正しく使用されないのはなぜですか?
  • Paintボタンのクリックでイベントを呼び出すことはできますか?
4

1 に答える 1

0

Hans Passant が述べたように、まだ存在しないものを利用することはできません。解決策: 作成後に描画します。

Invalidate();描画メソッドで変更される変数があるため、機能しません (そのためIndex、各呼び出しイベントに変更があります)。

イベントを使用する代わりに、Loadイベントを使用しShownます。これにより、フォームに線が描画されます。

private: System::Void SelectElementForm_Shown(System::Object^  sender, System::EventArgs^  e) 
{
    if (ElementList->Count > 0)
    {
        Index = 0;
        DrawLinesInLayout();
    }
}
于 2015-09-30T11:30:11.377 に答える