問題タブ [powerpacks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - WinForm DataRepeater C#PowerPackのハンドルボタンクリック
DataRepeaterでwinformボタンのクリックを処理したいのですが、どうすればよいですか?すべてのボタンはDataRepeaterに配置されます
どうもありがとうございます
data-binding - DataRepeater (Microsoft.VisualBasic.PowerPacks) を動的にバインドします。
DataRepeater を使用して、ビジネス オブジェクトからのデータを画面に表示しています。これを実現するために、C# で Windows フォームを使用しています。データソースはコンパイル時に利用できないため、実行時にデータソースをバインドしたいと考えています。
これが単純化されたシナリオです。私はこのビジネスクラスを使用しています:
VisualStudio インターフェイスを使用して ProductDataSource を作成し、価格をラベルにバインドしました。ここで、リピーターのデータソースをコードで埋めました。
アプリケーションを起動すると、価格がラベルに正しく入力されます。ここまでは順調ですね。
ここで、製品が更新されたときに価格ラベルを更新したいと考えています。Visual Studio インターフェイスが役に立ち、「データ ソース更新モード」を選択できるようになりました。そこで、「OnPropertyChanged」を選択します。
ここがトリッキーな部分です。.NET ランタイムは、price プロパティがバックエンドから更新されたことをどのように認識しますか。そこで、ビジネス クラスを変更して INotifyPropertyChanged を実装します。このような:
問題は、これが機能しないことです。製品を更新すると、インターフェイスで更新されていないことを意味します。プロパティをデバッグして変更すると、PropertyChanged イベントが null であるため、誰もリッスンしていないことがわかります。
問題をもう少し深く掘り下げると、MSDN の System.Windows.Forms.Binding Constructor ページで次のことがわかりました。
PropertyNameChanged という名前のイベント。
そこで、(カスタム) PriceChanged イベントを使用してみましたが、うまくいきませんでした。
ここで何か間違ったことをしていますか?私は WPF を使用しているので、これは Windows フォームでは少し異なるのでしょうか? これは、実行時にバインドしているためですか?
.net - 2つのコントロールを1つにリンクする
2つのコントロール(コンポーネント)を(視覚的および機能的に)リンクする可能性があるのでしょうか?(.NET2)
簡単に言うと、2つのラベルがあります。1つはメインラベル(マウスで移動できます)で、もう1つは説明ラベルです。指定した距離でメインラベルをたどる必要があります。
また、説明ラベルは、マウスクリックなどのイベントに応答できる必要があります。UserControlを使用する可能性はありますが、ラベルの間に「透明な」スペースが必要です。
ありがとう。
==編集1==
また、2番目のラベルコントロールを作成する代わりに、永遠のツールチップを使用することもできます。この場合、無限時間で表示される可能性と、ツールチップのクリックを検出する可能性について疑問に思います。
とにかく、ラベルまたはツールチップをクリックすると、表示された説明(実際には表示時間)を変更できるようにするために、(ツールチップまたはラベルの代わりに)TextBoxコントロールをユーザーに表示する必要があります。
==編集2==
代替テキストhttp://lh4.ggpht.com/_1TPOP7DzY1E/Sy9Mk8-Z-xI/AAAAAAAACzo/-5huzSd59j4/s800/UserControl.png
これは私の「透明な」UserControlデザインです
代替テキストhttp://lh5.ggpht.com/_1TPOP7DzY1E/Sy9MlM31jUI/AAAAAAAACzs/xIJ0hcgOzwo/s800/UserControlForm.png
これは実行モードのフォームです(ボタンをカバーするユーザーコントロールの「透明な」領域)。
これはusercontrolのコードです:
=================
*説明は少し簡略化されています。私の実際のケースでは、カスタムの円形ポイントコンポーネント(:Microsoft.VisualBasic.PowerPacks.OvalShapeから)があります。ポイントは、時間位置にあるオブジェクトを表します。リンクされたラベルで、ポイントの時間を指定する必要があります。ユーザーは、時間ラベルをクリックすることで、ポイントの時間を変更できます。
vb.net - プリンターの HDC を取得するにはどうすればよいですか
Print 関数を持つ C++ で記述された COM コンポーネントがあります。この印刷関数は、印刷に使用するすべての設定を含むパラメーターとして、プリンターの hDC を取ります。以前は、これは VB6 コードから呼び出され、オブジェクトPrinter.hdc
にすべてを設定した後にここで機能していました。Printer
コードは VB6 から VB.NET に変換され、やらなければならないことのほとんどがわかりました。古い Printer オブジェクトはMicrosoft.VisualBasic.PowerPacks.Printing.Compability.VB6.Printer
クラスを通じて利用できますが、古いhdc
プロパティはここではサポートされていません。
この hdc を入手する方法を誰か教えてもらえますか? GetHdevmode()
この hdcはSystem.Drawing.Printing.PrinterSettings
オブジェクトと同じですか?
.net - 2本の線の交点を検出する
フォームに2つの(VisualBasic.PowerPacks)LineShapesがあります。
代替テキストhttp://lh4.ggpht.com/_1TPOP7DzY1E/S2cIJan7eHI/AAAAAAAADAw/qwA0jFHEbBM/s800/intersection.png
それらの1つをクリックすると、特定のコンテキストメニューが表示されます。線はユーザーが移動できます。コンテキストメニューは行に関連付けられています。ただし、ユーザーが交点をクリックした場合(存在する場合)、他のメニューを表示する必要があります。これにより、アクションを実行する交線の1つが選択されます。
ここで、クリックポイントで2つ(またはそれ以上)の線が交差していることを検出する方法を考えます。この場合、他のコンテキストメニューが表示されるはずだからです。
私がやろうとしたこと:
コンテナにはLineShapesしかないと思います。つまり、LineShapeがマウスの下にある場合、ShapeContainerはMouseDownイベントを発生させません。
しかし、このコードは私にmostTop行しか与えませんが、他のリストも必要です。
.net - GDI + Line SmoothingModeを変更する方法は?
SmoothingModeを変更することはできPowerPacks.LineShape
ますか?
私はこのコード(継承するクラスLineShape
)を使用しようとしました:
私はいつも同じ結果になります: alt text http://lh6.ggpht.com/_1TPOP7DzY1E/S3v1IbxlbCI/AAAAAAAADD4/q1Y9kP8wJ0g/s800/Capture2.png
=======
編集
テストを更新しました:
結果(ラベルや円は考慮しないでください):
代替テキストhttp://lh3.ggpht.com/_1TPOP7DzY1E/S447qYvTqzI/AAAAAAAADE8/eP3kCLqQJbk/s800/Capture2.png
どうやらスムージングモードは考慮されていません...
c# - 線の塗り直しを手伝ってください
私はカスタムコントロール(から継承VisualBasic.PowerPacks.LineShape
)を実行しています。これは標準のコントロールと同じようにペイントする必要がありますが、その近くにアイコンが表示されています。
だから、私はこのようにオーバーライドOnPaint
しました:
これですべて問題ありませんが、コントロールが移動しても、アイコンは古い場所に描画されたままになります。
正しくペイントする方法はありますか?
代替テキストhttp://lh4.ggpht.com/_1TPOP7DzY1E/S5gXmp7xYiI/AAAAAAAADHI/pa1OhpKYSoM/Untitled-2.png 実際のプロジェクトの状況
CODE:テスト用のサンプルコード
代替テキストhttp://lh6.ggpht.com/_1TPOP7DzY1E/S5jSluxvtDI/AAAAAAAADHw/EUz0Tfet-rw/s800/Capture2.png
Nota Bene、lineShapeの場合:
1つのトレースを更新
OnPaintのこのバリアントには、次のトレースがあります。
代替テキストhttp://lh4.ggpht.com/_1TPOP7DzY1E/S5j29lutQ0I/AAAAAAAADH4/4yEnZd_hPjA/s800/Capture3.png
2つの点滅を更新
OnPaintのこのバリアントでは、点滅する画像があります。
代替テキストhttp://lh5.ggpht.com/_1TPOP7DzY1E/S5j4Bam7hiI/AAAAAAAADIA/1hQWKyV8Fr0/s800/Capture4.png
アップデート3:外部無効化
このバリアントはうまく機能しますが、IconLineShapeクラスの外部から:
これでテスト例の問題は解決しますが、このコントロールをコントロール内で実行する必要があります。このコントロールの外部の「クライアント」は、変更するたびに古い領域を保存して親を無効にすることを忘れないでください。場所...
.net - 選択したLineShapeシャドウ効果を削除する方法はありますか?
lineShapeを選択するときにLineShapeシャドウ効果を削除する方法はありますか?
代替テキストhttp://lh4.ggpht.com/_1TPOP7DzY1E/S6kq2KQ-zdI/AAAAAAAADIg/tUy74j-EpQc/s800/capture4.png
私は試した
しかし最後に、これは無効化にいくつかの逆効果をもたらします:(パネル内で)移動するとき、線はトレースを残します-正しく無効化されません。