C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: tabpageを別のTabコントロール


(過去ログ 125 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■74603 / inTopicNo.1)  tabpageを別のTabコントロールに追加でエラー
  
□投稿者/ ひでき (1回)-(2015/01/12(Mon) 18:53:34)

分類:[C#] 

VS2010でC#を使用しています。

Form1にあるtabControl1に、Form2のTabPageオブジェクトを挿入するとアプリを終了するときに以下の様なエラーがでてしまいます。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
重複した値は、一意インデックスに挿入できません。[Table name = コントロール,Constraint name = PK_コントロール]
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


挿入したtabpage上のコントロールのインデックス番号が重複してしまっているのかと思い、使っていない番号に全て変えましたが解決しませんでした。
この挿入はイベントで行うものなので、そのイベントを起こさないとtabpaegは挿入されず、エラーも起きません。

処理は、

public partial class Form1 : Form
{
private void a_Click(object sender, EventArgs e){
 Form2 form2 = new Form2();
////タブページ
TabPage tp = form2.getTabPage();
this.tabControl1.Controls.Add(tp);
}
}

public partial class Form2 : Form
{
public TabPage getTabPage(){
return tabpage1;
}
}

//Form2のタブページは[デザイン]画面で作成し、buttonが2つと、ListViewなどが乗っています。



解決方法をご存知のかたいらっしゃいましたらご連絡ください。
引用返信 編集キー/
■74606 / inTopicNo.2)  Re[1]: tabpageを別のTabコントロール
□投稿者/ Azulean (408回)-(2015/01/12(Mon) 20:38:05)
2015/01/12(Mon) 20:42:54 編集(投稿者)

No74603 (ひでき さん) に返信
> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
> 重複した値は、一意インデックスに挿入できません。[Table name = コントロール,Constraint name = PK_コントロール]
> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

その TabPage にデータベースを扱うようなものがあるのでは?
例外のメッセージから読み取るに「コントロールのインデックス」ではなく、「一意インデックス」、つまり Unique 制約に反するデータが追加されようとしたということです。
これ以上は、明示されたソースコードからはわからないのでコメントは難しいです。

採るべき策があるとすれば、重複して更新処理・追加処理が実行されないようにガードすることでしょうか。
(理想的には、別のフォームのコントロールを使うという設計をそもそも見直すところですが…)


<追伸>
単純に Form1 と Form2 を用意し、Form2 の TabPage に Button/ListView を貼り付けて似たようなコードで再現を試みましたが、再現しませんでした。

問題を切り分けるという意味では、同じような構造で再現するかどうか、新しいプロジェクトでテストすると、どの部分で問題が起きているのかを突き止めやすくなるので、お試しください。
引用返信 編集キー/
■74607 / inTopicNo.3)  Re[2]: tabpageを別のTabコントロール
□投稿者/ ひでき (2回)-(2015/01/12(Mon) 21:33:12)
No74606 (Azulean さん) に返信

ありがとうございます。データベースは使っていないので、「 Unique 制約」に反している部分がないか調べてみます。
Unique 制約という名前を初めて聞いたので、だいぶ道が開けた気がします。

ありがとうございました。
引用返信 編集キー/
■74608 / inTopicNo.4)  Re[3]: tabpageを別のTabコントロール
□投稿者/ Azulean (409回)-(2015/01/12(Mon) 21:57:53)
No74607 (ひでき さん) に返信
> ありがとうございます。データベースは使っていないので、「 Unique 制約」に反している部分がないか調べてみます。
> Unique 制約という名前を初めて聞いたので、だいぶ道が開けた気がします。

「PK_コントロール」という名前がキーワードになるのかもしれません。
複数人で開発しているのであれば他のメンバーにも聞いてみる、あるいは標準ではないコントロールを利用しているのであればそのコントロールやその周りを怪しむことも考えてみてください。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -