Putting array name in variable and shortening code
Is it possible to put the array name into a variable and iterate by a foreach loop?


YES. 

Array ProductItems = Drinks.ToArray();
foreach(Product item in ProductItems)
                    {
                        Console.WriteLine(item.ProductName);
                    } 




Now about your second question, (it's unclear what's the significance of the first question)...

If there are many products and user selects one from the combobox1 how to update the product details in listbox1? (is this your question?)

Answer : Make a Dictionary of combobox1 index and ProductList. Iterate over the combobox1 list and map the indexes with the ProductList. This may help.

Dictionary ProductDict = new Dictionary&lt;int, List&lt;Product&gt;&gt;();  


Then after SelectedIndexChanged event is fired get the ProductList corresponding with combobox1 index. Then iterate over the list and add the details it in listbox.



General Review

Since productName and price is trivial make them auto-implemented properties

public string ProductName { get; set; }