私のコードはあまり関係ありませんが、背景を説明するために、次のmessageWindow
ようなウィンドウのインスタンスを開くメソッドがあります。
private void SetMessagePosition(Controls.Button btn, string text)
{
messageWindow = new messageWindow(text);
relativePoint = btn.TransformToAncestor(this).Transform(new Point(0, 0));
messageWindow.Left = relativePoint.X + this.Left;
messageWindow.Top = relativePoint.Y + this.Top;
messageWindow.Show();
}
しかし、この方法を使用して他のウィンドウも開くことができるかどうかを確認したいと思います。これは明らかに、開きたい新しいウィンドウの名前をパラメーターとして渡すことを意味します。私の質問は、どのようにですか?私はそのようにパラメータを渡そうとしました;
private void SetMessagePosition(Window newWin, Controls.Button btn, string text))
{
newWin = new newWin(text);
...
Where newWin
= 開きたいウィンドウのタイプ。しかし、new newWin
VS は と呼ばれるウィンドウを認識していないため、明らかにパーツはエラーをスローしますnewWin
。
あなたの最初の考えは、このメソッドを呼び出す前にウィンドウをインスタンス化するだけでなく、この行をすべてスキップできるということです。このメソッドは、実際には、開いた時点で親ウィンドウに対する新しいウィンドウの位置を設定します。したがって、今までその位置を設定することはできませんでした。
私が試してみようと思ったもう1つのことは次のとおりです。
List<Window> winList;
List<Type> winListType;
winList.Add(window1);
winList.Add(window2);
winList.Add(window3);
winListType.Add(Window1);
winListType.Add(Window2);
winListType.Add(Window3);
SetMessagePosition(winList[2], winListType[2], btn1, "Yes");
private void SetMessagePosition(Window newWin, Type newWinType, Controls.Button btn, string text))
{
newWin = new newWinType(text);
...
しかし、 のリストであっても、変数ではなく anewWinType
が渡されるのは好きではありません。誰かがこれを行う方法/回避策を知っていれば、私は非常に感銘を受けます.Type
Type