akatukisidenWPFでテキストボックスを数字しか入力できないようにする方法を紹介します。実はスペースキー(及びシフトを押しながらスペースキー)を押したときの処理はEditingCommands.Space,(EditingCommands.ShiftSpace)というinternalな非公開の定義済みコマンドで行われています。CommandManager.PreviewExecutedイベントで存在を確認することができます。InputBindingsでこれらのキー入力で呼び出すコマンドをApplicationCommands.NotACommandに置き換え、無効化すると半角スペースの入力がPreviewTextInputイベントで拾えるようになります。ModifierKeys.Shift));IME有効時の入力や、確定済み文字列の再変換ではPreviewTextInputイベントより先にTextChangedイベントが発生してしまいます。やろうと思えば対処することもできるかもしれませんが、面倒くさいのでIMEモードを無効にします。選択すると数字以外の文字に変換されてしまう可能性があります。コンテキストメニュー周りはAppキー(キーボード右下あたりのハンバーガーメニューマークが印字されてるキー)やShift+F10ショートカットではApplicationCommands.ContextMenuが発生するが右クリックでは発生しないContextMenuOpeningイベントも発生したりしなかったりと動作が不安定なため、textbox.ContextMenuにnullを代入してコンテキストメニュー自体を無効化します。null;最後にクリックボードからの貼り付け(ペースト)対策です。こちらはCommandBindingを使って、ApplicationCommands.Pasteの中身を書き換えクリックボードの中身が数字の時のみペーストするようにします。result)){textbox.Paste();}else{}}これで、おそらく数字しか入力できなくなったはずです。Styleなどでうまく使いまわせるようにしたかったのですが。SDKをつかってビヘイビアにしてみました。akatukisidenVisualforceでコントローラーでURLパラメータを取得するにはApexPages.currentPage().getParameters().get(param_name);とする必要があるのですが。できれば関数呼び出しなど行わず、最初から変数に代入されている形で取得したいです。細かい検証はしていませんが、とりあえず実現できる方法を見つけたので紹介します。apex:PageにはControllerを指定せずに、カスタムコンポーネントを一つだけ配置しLightningの最上位コンポーネントと同じようにこのコンポーネントに表示内容を記述し、コントローラーもこちらに指定するようにします。Viewでは{!$CurrentPage.parameters.param_name}でURLパラメータを取得することができるので、apex:attributeを使い、URLパラメータをコンポーネントに渡し、assignTo属性でコントローラの変数に渡す事でURLパラメータをControllerの変数に直接渡すことができます。//←URLパラメータが代入される。試してみようと思ったのですが、なぜかエラーになってログイン・データの取得すらできません。調べた結果パスワードに末尾にセキュリティトークンをつける必要があるという事が分かったのですが。設定メニューを見てもセキュリティトークンに関する項目が見当たりませんでした。なんとか、セキュリティトークンの発行方法が分かったので手順書いておきます。設定メニューから[ユーザ]>[ユーザ]を選んで[すべてのユーザ]画面を開く。(自分自身の)ユーザーを選択しユーザー情報の表示画面を開く。[パスワードを変更]ボタンをクリックして[私のパスワード変更]画面を開く。左側のメニューの項目が変更されるので、その中から[私のセキュリティトークンのリセット]を選択し[私のセキュリティトークンのリセット]画面を開く。[セキュリティトークンのリセット]ボタンをクリックする。列ごとに種類を決めることがでます。自分でテンプレートを設定できるDataGridTemplateColumnのほかに編集中はTextBox、それ以外ではTextBlockになるDataGridTextColumn,編集中はCombobox、それ以外ではTextBlockになるDataGridComboBoxColumn,編集中も非編集中もCheckBoxな、DataGridCheckBoxColumn等があらかじめ用意されています。セルの編集完了時、編集キャンセル時にCellEditEndingイベントが発生します。編集中のコントロール(ContentPesenter,TextBox,ComboBox,CheckBoxなど)はEditingElement今が編集確定時、キャンセル時のどちらかなのかは、EditActionで取得できます。Cancelにtrueを代入するとイベント終了後も編集状態を維持することができます。Tabキーなどで選択セルを変更した場合遷移前と遷移後の両方のセルが編集状態になってしまうことがあるので注意が必要です。行の編集が完了した時にはRowEditEndingイベントが発生します。コントロールに入力した値がバインドしたViewModelに反映されるのはこのイベントの発生後になります。そのためセルや行の編集中にセルに表示されている値を使用したい場合ViewModelからではなく、コントロールから直接値を取得する必要があります。表示用コントロールを取得するには、メンバのGetCellContent(DataGridRow)関数を使用します。DataGridTemplateColumnの場合には取得できるのはContentPresenterなのでそこからテンプレートで指定したコントロールを取得する必要があり、VisualTreeHelper.GetChild(DependencyObject,int)を使用することで実現できます。セルが編集モードになる時には、PreparingCellForEditイベントが発生するので編集中コントロールにデータを直接渡す必要があるときなどに使うと便利です。akatukisiden最近、いい案件の探し方について考えている。ある程度優秀な人が権限を握っていて技術や、品質こだわれる案件。権限を握るの未経験で権限を与えてくれる現場はほとんど無い気がする。常駐先の社員が権限を握っていてその指揮下にはいる前提の案件が多かった気がする。冷静に考えたら、指揮下にはいる前提の案件で仮にいくら活躍しても権限握るの難しくね?まあ、品質にこだわれなくて活躍のしようがないことの方が多いのだが......そういえば、知り合いにフリーランスのプロマネとか結構いる。プロジェクトを作ってみる。akatukisiden仕事でTypeScriptを使うことになったのでとりあえず勉強してみます。アプリケーションというのがあったのでとりあえず、このプロジェクトを作ってみましたビルドするとプロジェクトには追加されませんがapp.tsと同じディレクトリにapp.jsが生成されます。並べて表示させると変換前のTypeScript,変換後のJavaScript両方を確認しながら作業ができるので便利です。関数編TFSのExcel連携がエラーで動かない時の解決方法。VisualforceでURLパラメータをコントローラのメンバ変数として受け取る方法dllに含まれる関数の一覧を取得する。数分待ってページを再読み込みしてください。使用に同意したとみなされます。ポリシー%d人のブロガーが「いいね」をつけました。