2017-04-18 47 views
-3

我正在製作一個應用程序,它將使用另一個類的函數,打開顏色對話框,然後將顏色值返回到窗體。我寫了這個班,但我不明白爲什麼它給了我一個錯誤。錯誤是c# - 從函數返回顏色

由於'Editing.ChooseColor'返回void,所以return關鍵字後面不能有對象表達式。

我的類代碼爲

 public void ChooseColor() 
    { 
     ColorDialog ColorDialog = new ColorDialog(); 
     ColorDialog.ShowDialog(); 
     System.Drawing.Color Color = ColorDialog.Color; 
     return Color; 
    } 

我的形式將調用函數和得到的顏色值。感謝幫助。

+6

改變你的返回類型從無效到彩色。 – Mangist

+1

將函數的返回類型從'void'改變爲'Color'並且在定位之前在線搜索會很聰明 –

+0

'void'意味着「我的方法不會返回任何東西」。但是你試圖返回一個'Color',所以你必須適當地設置返回類型。 – HimBromBeere

回答

0

你必須返回Color

// static: you don't want "this" in the method 
public static Color ChooseColor() { 
    // Do not forget to Dispose IDisposable 
    using (ColorDialog ColorDialog = new ColorDialog()) { 
    if (ColorDialog.ShowDialog() == DialogResult.OK) 
     return ColorDialog.Color; // user has selected color and clicked "OK" 
    else 
     // or other stub color (Color is struct, so we can't return null) 
     return Color.Transparent; 
    } 
} 
0

void告訴編譯器該方法不返回任何東西。所以試圖返回一些結果會導致編譯器錯誤。

告訴編譯器,您傳回類型:

public System.Drawing.Color ChooseColor() 
{ 
    //... 
} 
+0

非常感謝。我已經將void改爲Color,但忘記在我的類中編寫System.Drawing.Color或使用System.Draving。 –

0
public void ChooseColor() 
{ 
    ColorDialog ColorDialog = new ColorDialog(); 
    ColorDialog.ShowDialog(); 
    System.Drawing.Color Color = ColorDialog.Color; 
    return Color; 
} 

這是一個公共void,如果你希望它返回一個顏色應該是一個顏色。

public System.Drawing.Color ChooseColor() 
{ 
    ColorDialog ColorDialog = new ColorDialog(); 
    ColorDialog.ShowDialog(); 
    System.Drawing.Color Color = ColorDialog.Color; 
    return Color; 
} 
0

你需要讓你的函數返回一個顏色,只有當用戶在對話框上單擊OK:

public Color ChooseColor() 
{ 
    ColorDialog ColorDialog = new ColorDialog(); 
    if(ColorDialog.ShowDialog()==DialogResult.OK) 
    { 
     return ColorDialog.Color; 
    } 
    return Color.None; 
} 
+0

謝謝你的回答。當我寫Return color.none時,它會給出一個錯誤,說沒有None顏色。可能將其更改爲透明? –