none
c#查看控制項是否存在問題 RRS feed

  • 問題

  • 我有兩個畫面

    一個是Main.xaml

    一個是Question.xaml

    <RichTextBox Grid.Row="2" Grid.Column="1" Name="A" Height="28" AcceptsReturn="False"/>
    <RichTextBox Grid.Row="3" Grid.Column="1" Name="B" Height="28" AcceptsReturn="False"/>
    <RichTextBox Grid.Row="4" Grid.Column="1" Name="C" Height="28" AcceptsReturn="False"/>
    <RichTextBox Grid.Row="5" Grid.Column="1" Name="D" Height="28" AcceptsReturn="False"/>
    ......
    ......
    
    <StackPanel  Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" VerticalAlignment="Center" Name="BOX">
                    <CheckBox Name="AA" Content="A" Margin="0,0,5,0"/>
                    <CheckBox Name="BB" Content="B" Margin="0,0,5,0"/>
                    <CheckBox Name="CC" Content="C" Margin="0,0,5,0"/>
                    <CheckBox Name="DD" Content="D" Margin="0,0,5,0"/>
    ......
    .....
    </StackPanel>
    

    以上是Question.xaml的畫面

    RichTextBox和CheckBox會動態產生

    我想在Main.xaml知道當前產生了哪些

    所以我的作法是想在Main.xaml用Name判斷RichTextBox是否存在

    但是我不知道怎麼在Main.xaml判斷在Question.xaml的控制項是否存在

    請問有什麼方法嗎?

    2018年6月29日 上午 03:36

解答

  • 你把 Question 傳給 Main 就可以了。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    • 已標示為解答 Wade0728 2018年7月5日 上午 05:27
    • 已取消標示為解答 Wade0728 2018年7月5日 上午 05:27
    • 已標示為解答 Wade0728 2018年7月5日 上午 05:27
    2018年7月4日 上午 09:57
    版主
  • 我假設你是由 Main 去啟動 Question

    那一定會有個 var question =new  Question(); 之類的程式碼吧。

    這時 question 變數就可以用來做視覺樹搜尋了


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    • 已標示為解答 Wade0728 2018年7月5日 上午 07:39
    2018年7月5日 上午 07:23
    版主

所有回覆

  • 有幾種方式

    (1) 直接在 Visual Tree 搜尋 element : 參考 https://rachel53461.wordpress.com/2011/10/09/navigating-wpfs-visual-tree/ (這個方式難免消耗效能,因為是搜尋視覺樹)

    (2) 先設定一個 List<FrameworkElement> 之類的,然後每個 UIElement 加上 Loaded event , 事件委派函式的內容就是把控制項加進 List<FrameworkElement>

    (3) 因為你只描述了技術性上的需求,而沒有描述實際的需求,我只能給你技術上的建議。搞不好你的需求根本不需要這麼麻煩就辦得到 (很多時候 WPF 上的資料繫結就能漂亮的解決很多問題)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2018年6月29日 上午 09:34
    版主
  • 你好,我有找到一個FindName()的方法

                    object wantedNode = FindName("txtFileName1");
                    if (wantedNode != null)
                    {
                        Console.WriteLine("txtFileName1" + "exist");
                    }
                    else
                    {
                        Console.WriteLine("Control not found");
                    }

    但是這函式在Main.xaml.cs使用就只能找Main.xaml的控制項

    有沒有辦法在Main.xaml.cs使用然後找Question.xaml的控制項?

    • 已標示為解答 Wade0728 2018年7月5日 上午 05:27
    • 已取消標示為解答 Wade0728 2018年7月5日 上午 05:27
    2018年7月4日 上午 01:06
  • 你把 Question 傳給 Main 就可以了。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    • 已標示為解答 Wade0728 2018年7月5日 上午 05:27
    • 已取消標示為解答 Wade0728 2018年7月5日 上午 05:27
    • 已標示為解答 Wade0728 2018年7月5日 上午 05:27
    2018年7月4日 上午 09:57
    版主
  • 請問要怎麼把Question 傳給 Mai?

    有沒有範例可參考

    或是要用哪個函式?

    2018年7月5日 上午 05:49
  • 我假設你是由 Main 去啟動 Question

    那一定會有個 var question =new  Question(); 之類的程式碼吧。

    這時 question 變數就可以用來做視覺樹搜尋了


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    • 已標示為解答 Wade0728 2018年7月5日 上午 07:39
    2018年7月5日 上午 07:23
    版主