5

私はC#-Winformsアプリケーションに取り組んでおり、読み取り専用テキストボックスの背景色を次のように設定しようとしています...

txtMyBox.BackColor = Color.FromName ("Red");

これはエラーメッセージで失敗しています...

System.ArgumentException was unhandled
Message=Control does not support transparent background colors.
Source=System.Windows.Forms

まず最初に; これは、読み取り専用テキストボックスの背景色を設定する正しい方法ですか?私はこれを通常のテキストボックスでよく行っていますが、正常に機能しているようです。

もしそうなら、誰かが「透明な背景色」とは何か、そしてなぜ私がそれを欲しがるのかを手伝ってくれるでしょうか?私はそうは思わない。背景の色を変えたいだけです。

4

5 に答える 5

8

かなり古い投稿ですが...以前にこれを試したことはありますか?

public partial class MyForm : Form
{
    public MyForm()
    {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

        InitializeComponent();
    }
}
于 2016-04-13T16:58:39.633 に答える
3

少し遅れましたが、最終的には、OPの質問によると、私のようにこのページを見つけた人を助けます。

によって生成されたWinformsSplitterの背景色を設定するときにこのエラーが発生しました

Color.FromArgb(0xC9,0xD9,0xEB);

解決策は、代わりに次のヘルパーメソッドを使用してColor値を生成することでした。

ColorTranslator.FromHtml("#C9D9EB") 

これにより、透明性情報の生成が回避されます。

于 2017-11-22T22:27:21.680 に答える
2

より良い方法は次のとおりです。

txtMyBox.BackColor = Color.Red;

発生するエラーは、フォーム自体の背景色を透明に設定しようとしているコードのどこかでサポートされていないために発生しています。コードを注意深く確認すると、次のようなものが見つかります。

BackColor = Color.Transparent;

要素名がなく(つまり、myControl.BackColor = somthing)、文がBackColor = somthingで始まるため、コンパイラはWindowsフォームの背景色を透明に変更したいと考えているので、フォームエディタも確認してください。そこから。

これがあなたのエラーの再現です:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        BackColor = Color.Transparent; //Control does not support transparent background colors.
    }
}
于 2012-05-14T15:37:12.017 に答える
0

代わりにこれを試してくださいFromName

 txtMyBox.BackColor = Color.Red;
于 2012-05-14T15:30:57.183 に答える
0
ColorTextBox.BackColor = colorDialog1.Color;
textBox2.BackColor = System.Drawing.Color.FromArgb(
                     ColorTextBox.BackColor.ToArgb()); 
于 2014-05-06T07:38:45.337 に答える