実現したいこと
NAudioライブラリーを使ってアプリ SentenceTimeStamper、以下STSを作っています。
(正確にはNAudioがver1.9から2.2にバージョンアップし、また.Netframewark4がサポート外になり、win11で開発を継続したいためバージョンアップしています。3年ぶりのC#開発のため、色々忘れています。)
STSは、NAudioライブラリのほか、NAudio.WaveFormRendererを使っていますが、WaveFormRenderer機能を追加したくクラスを追加したり、コードを書き換えたりしています。
現在、バージョンアップの作業をしていますが、以下のような問題に悩まされています。
発生している問題・分からないこと
エラー
CS0246 型または名前空間の名前 'PictureBox' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください) WaveFormRendererLib
が発生しています。
STS ver.2(以下STS2)はVisualStudio2022を使って開発をしています。ver.2にするためにSTS ver.1(以下STS1)のソリューションからWaveFormRendererのプロジェクトを削除し、GitHubのNAudio.WaveFormRendererからZIPファイルをダウンロードし、またその中からWaveFormRendererLibフォルダーをコピーし、STS2の開発用フォルダに貼り付け、VS2022のソリューションに既存のプロジェクトとして追加しました。
そのあと、WaveFormRendererを改造するために、クラスSentenceInfo(.cs)を追加しました。このクラスはSystem.Windows.FormsのPictureクラスを継承しています。
<STS1での状況>
以前開発が完了したSTS1のソリューションエクスプローラを示します。
STS1の時は、エラー(CS0246)は発生しませんでした。
<STS1とSTS2のソリューションエクスプローラ上の違い>
上の2つの図のソリューションエクスプローラを比べるとSTS2のWaveFormRendererLibには「参照」の項目がありません。このためアセンブリ参照ができないのだと考えます。
アセンブリを参照することができれば問題につながるのではないでしょうか。
なお、STS1とSTS2はGitHubからダウンロードできます。
エラーメッセージ
error
1重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 2エラー (アクティブ) CS0246 型または名前空間の名前 'PictureBox' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください) WaveFormRendererLib D:\XXXXX\source_C#\TestSTS\SentenceTimeStamper-master (1)\SentenceTimeStamper2\WaveFormRendererLib\SentenceInfo.cs 7 3
該当のソースコード
C#
1using System; 2using System.Windows.Forms; 3 4 5namespace NAudio.WaveFormRenderer 6{ 7 public class SentenceInfo:PictureBox 8 { 9 private long samplingPosition; 10 private bool onstart; 11 private bool onmanual; 12 private const int ArrowWidth = 44; 13 private const int ArrowHeight = 21; 14 private string sentenceText; 15 16 17 public SentenceInfo() 18 { 19 Width = ArrowWidth; 20 Height = ArrowHeight; 21 22 } 23 24 public SentenceInfo(long Position, bool onStart, bool onManual) 25 { 26 Width = ArrowWidth; 27 Height = ArrowHeight; 28 //Console.WriteLine("ArrowWidth1={0}", Width); 29 30 this.samplingPosition = Position; 31 this.onstart = onStart; 32 this.onmanual = onManual; 33 34 changImage(); 35 } 36 37 private void changImage() 38 { 39 if (this.onstart) 40 { 41 this.Image = WaveFormRendererLib.Properties.Resources.StartTag; 42 } 43 else 44 { 45 this.Image = WaveFormRendererLib.Properties.Resources.PauseTag; 46 } 47 48 } 49 public long SamplingPosition { get { return samplingPosition; } set { samplingPosition = value; } } 50 public bool OnStart 51 { 52 get 53 { 54 return onstart; 55 } 56 set 57 { 58 onstart = value; 59 changImage(); 60 } 61 } 62 63 64 public bool OnManual { get { return onmanual; } set { onmanual = value; } } 65 66 public string SentenceText { get { return sentenceText; } set { sentenceText = value; } } 67 68 } 69} 70
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
SentenceTimeSamperプロジェクトとWaveFormRendererLibプロジェクトのターゲットフレームワークを調べました。
以下の図のとおり、
SentenceTimeSamperプロジェクト:.NET Framework4.7.2
WaveFormRendererLibプロジェクト:.NET Standard2.0
でした。
WaveFormRendererLibプロジェクトのフレームワークが.NET Framework4.7.2ではなく、.NET Standard2.0のため、System.Windows.Formsを参照できないのでしょうか??
補足
以上、現状わかる範囲で調べてみました。不足についてはご質問ください。
ご教示の程、よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/06/24 05:24 編集